Fóruns

Início » Liferay Portal » Español » 3. Desarrollo

Visualização combinada Visão plana Exibição em árvore
Tópicos [ Anterior | Próximo ]
toggle
Enzo Ferrari
Obtener preferencias de un portlet desde metodo init()
27 de Dezembro de 2012 07:19
Resposta

Enzo Ferrari

Ranking: New Member

Mensagens: 19

Data de entrada: 17 de Maio de 2012

Mensagens recentes

Saludos colegas

Tengo un problema al intentar obtener las preferencias de un portlet (el cual extiende de MVCPortlet) desde el método init().

Buscando por los foros, encontre el siguiente hilo: http://www.liferay.com/community/forums/-/message_boards/message/4929380
en el cual se propone utilizar una DynamicQuery

 1
 2ClassLoader cl = PortalClassLoaderUtil.getClassLoader();
 3DynamicQuery query = DynamicQueryFactoryUtil.forClass(
 4        PortletPreferences.class, cl).add(
 5        PropertyFactoryUtil.forName("portletId").like("%LineChart%"));
 6
 7List<Object> preferences = PortletPreferencesLocalServiceUtil.dynamicQuery(query);
 8
 9System.out.println("Preferences are: " + preferences
10        + ", size is: " + preferences.size());
11
12for (Object preferencesPart : preferences) {
13        System.out.println(((PortletPreferences) preferencesPart).getPreferences());


Sin embargo esto genera una ClassNotFoundException:
 1
 216:15:47,782 ERROR [DynamicQueryFactoryImpl:83] Unable find model javax.portlet.impl.PortletPreferencesImpl
 3java.lang.ClassNotFoundException: javax.portlet.impl.PortletPreferencesImpl
 4    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1645)
 5    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
 6    at com.liferay.portal.dao.orm.hibernate.DynamicQueryFactoryImpl.getImplClass(DynamicQueryFactoryImpl.java:78)
 7    at com.liferay.portal.dao.orm.hibernate.DynamicQueryFactoryImpl.forClass(DynamicQueryFactoryImpl.java:39)
 8    at com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil.forClass(DynamicQueryFactoryUtil.java:29)
 9    at cl.forexchile.portlet.solicitademo.DemoPortlet.init(DemoPortlet.java:209)
10    at javax.portlet.GenericPortlet.init(GenericPortlet.java:107)
11    at com.liferay.portlet.InvokerPortletImpl.init(InvokerPortletImpl.java:245)
12    at com.liferay.portlet.PortletInstanceFactoryImpl.init(PortletInstanceFactoryImpl.java:216)
13    at com.liferay.portlet.PortletInstanceFactoryImpl.create(PortletInstanceFactoryImpl.java:139)
14    at com.liferay.portlet.PortletInstanceFactoryUtil.create(PortletInstanceFactoryUtil.java:40)
15    at com.liferay.portal.deploy.hot.PortletHotDeployListener.initPortletApp(PortletHotDeployListener.java:522)
16    at com.liferay.portal.deploy.hot.PortletHotDeployListener.doInvokeDeploy(PortletHotDeployListener.java:260)
17    at com.liferay.portal.deploy.hot.PortletHotDeployListener.invokeDeploy(PortletHotDeployListener.java:101)
18    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._doFireDeployEvent(HotDeployUtil.java:109)
19    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil._fireDeployEvent(HotDeployUtil.java:182)
20    at com.liferay.portal.kernel.deploy.hot.HotDeployUtil.fireDeployEvent(HotDeployUtil.java:38)
21    at com.liferay.portal.kernel.servlet.PortletContextListener.doPortalInit(PortletContextListener.java:99)
22    at com.liferay.portal.kernel.util.BasePortalLifecycle.portalInit(BasePortalLifecycle.java:42)
23    at com.liferay.portal.kernel.util.PortalLifecycleUtil.flushInits(PortalLifecycleUtil.java:41)
24    at com.liferay.portal.servlet.MainServlet.initPlugins(MainServlet.java:803)
25    at com.liferay.portal.servlet.MainServlet.init(MainServlet.java:355)
26    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
27    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
28    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
29    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4350)
30    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4659)
31    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
32    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
33    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
34    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
35    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
36    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
37    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
38    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
39    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
40    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
41    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
42    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
43    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
44    at org.apache.catalina.core.StandardService.start(StandardService.java:519)
45    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
46    at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
47    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
48    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
49    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
50    at java.lang.reflect.Method.invoke(Method.java:597)
51    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
52    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)


Mi consulta es si me falta importar/declarar alguna librería, o debo obtener el ClassLoader de alguna otra forma? ya que desconozco a que JAR pertenece la clase javax.portlet.impl.PortletPreferencesImpl
Mikel Goikoetxea
RE: Obtener preferencias de un portlet desde metodo init()
28 de Maio de 2012 02:30
Resposta

Mikel Goikoetxea

Ranking: Junior Member

Mensagens: 55

Data de entrada: 16 de Março de 2010

Mensagens recentes

Buenas Enzo,

Un portlet pasa por la fase INIT cuando se despliega el portlet, es decir cuando instalamos el portlet en el servidor de aplicaciones.
No entiendo muy bien por qué quieres obtener las preferencias de tu portlet en el INIT. Lo más lógico sería obtenerlos en la fase RENDER, es decir a la hora de pintar, bien sea en el modo VIEW o en el EDIT.
Para eso con lo siguiente ya lo tendrías:
1PortletPreferences prefs = renderRequest.getPreferences();
2String elementosPorPagina = (String) prefs.getValue("ELEMENTOS_POR_PAGINA", valorDefectoElementosPorPagina);

Nos comentas si te sirve esta solución.

Un saludo,

Mikel Goikoetxea Bilbao (@mgoibil)
B2B 2000
Enzo Ferrari
RE: Obtener preferencias de un portlet desde metodo init()
5 de Junho de 2012 07:56
Resposta

Enzo Ferrari

Ranking: New Member

Mensagens: 19

Data de entrada: 17 de Maio de 2012

Mensagens recentes

Gracias por responder y perdón por tardar tanto en pasar por aquí nuevamente.
La verdad ya había optado por usar ese enfoque

Saludos