Foros de discusión

Plugin portlet + dynamicQuery

Vilmos Kozma, modificado hace 13 años.

Plugin portlet + dynamicQuery

Junior Member Mensajes: 68 Fecha de incorporación: 12/11/09 Mensajes recientes
Sziasztok,

Szeretném használni a dynamicQuery-t egy plugin portletből az alábbi módon, egy processAction()-ből közvetlenül hívva, de az elszáll NPE-vel:


DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(Layout.class);


Kidebuggoltam, és azt látom, hogy classloader probléma, és találtam is egy relevánsnak tűnő bugot reportot a Jirában: LPS-1771. Ott azonban azt állítják, hogy ezt 5.2.0-ban javították, én pedig 5.2.3-at használok (az utolsó letölthető stabil verziót).

Tudok ezzel valamit kezdeni? A probléma már máshol is előjött, így most úgy tűnik, hogy a dynamicQuery használhatatlan plugin portletből.

Köszi és üdv,
Vili
thumbnail
Zsigmond Rab, modificado hace 13 años.

RE: Plugin portlet + dynamicQuery

Liferay Master Mensajes: 728 Fecha de incorporación: 5/01/10 Mensajes recientes
Helló!

Milyen típusú portlet-tel próbálkozol?

Esetleg tudnád csatolni, hogy megnézzük? Ha más nem valami butított verzióját.

Köszi,
Zsigmond
Vilmos Kozma, modificado hace 13 años.

RE: Plugin portlet + dynamicQuery

Junior Member Mensajes: 68 Fecha de incorporación: 12/11/09 Mensajes recientes
Sima JSP portlet. A legegyszerűbben így lehet reprodukálni az esetet:


package mypackage;



import java.io.IOException;


import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;

import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
import com.liferay.portal.model.Layout;
import com.liferay.util.bridges.jsp.JSPPortlet; 

public class DummyPortlet extends JSPPortlet {

	@Override
	public void processAction(ActionRequest actionRequest, ActionResponse actionResponse) throws IOException, PortletException {
		DynamicQuery dynamicQuery = DynamicQueryFactoryUtil.forClass(Layout.class);
		System.out.println(dynamicQuery);
		super.processAction(actionRequest, actionResponse);
	}
}


Üdv,
Vili
thumbnail
Zsigmond Rab, modificado hace 13 años.

RE: Plugin portlet + dynamicQuery

Liferay Master Mensajes: 728 Fecha de incorporación: 5/01/10 Mensajes recientes
Helló!

Bocs, hogy ilyen sokáig nem jelentkeztünk!

Valóban nem működik. Van egy ilyen issue is erről: http://issues.liferay.com/browse/LPS-6738. Bár csak 6-osban lett javítva. Érdemes azzal összehasonlítani, hogy mi változott.

Üdv,
Zsigmond
Vilmos Kozma, modificado hace 13 años.

RE: Plugin portlet + dynamicQuery

Junior Member Mensajes: 68 Fecha de incorporación: 12/11/09 Mensajes recientes
Hi,

A fenti probléma még mindig létezik (6.0.5 CE), lehet, hogy érdemes lenne fel venni egy issuet hozzá (amennyiben még nincs), mert elég core funkció szerintem.

A fent hivatkozott link valószínüleg más bug lehet, legalábbis a dobott exception alapján.

Lásd. még itt:

http://www.liferay.com/community/forums/-/message_boards/message/7321256

Üdv,
Vili
thumbnail
Vilmos Papp, modificado hace 13 años.

RE: Plugin portlet + dynamicQuery (Respuesta)

Liferay Master Mensajes: 529 Fecha de incorporación: 21/10/10 Mensajes recientes
Szia!

Próbáltad megadni a portál classloaderét a DynamicQueryFactoryUtil.forClass() hívásnál paraméterként?

Üdv.
Vili
Vilmos Kozma, modificado hace 13 años.

RE: Plugin portlet + dynamicQuery

Junior Member Mensajes: 68 Fecha de incorporación: 12/11/09 Mensajes recientes
Igen, azóta már pont próbáltam és bizony működik is.

Kösz a kommentet.

üdv,
Vili
thumbnail
Richard Kovacs, modificado hace 13 años.

RE: Plugin portlet + dynamicQuery

New Member Mensajes: 23 Fecha de incorporación: 14/06/10 Mensajes recientes
Szia Vilmos!

Konrét kódrészletet tudnál küldeni, ahogyan működésre sikerült bírni?

Üdv,
Ricsi
Vilmos Kozma, modificado hace 13 años.

RE: Plugin portlet + dynamicQuery

Junior Member Mensajes: 68 Fecha de incorporación: 12/11/09 Mensajes recientes
Valahogy így:


DynamicQuery query = DynamicQueryFactoryUtil.forClass(User.class, PortalClassLoaderUtil.getClassLoader());
query.add(PropertyFactoryUtil.forName(fieldName).eq(value));
...
List result = DbEntryLocalServiceUtil.dynamicQuery(query);


Üdv,
Vili