Fórumok
including self-developed portlet with <portal:runtime>
Stefan Finke, módosítva 8 év-val korábban
including self-developed portlet with <portal:runtime>
New Member Bejegyzések: 8 Csatlakozás dátuma: 2014.06.03. Legújabb bejegyzések
Hello,
I'm trying to include a (simple) portlet into another by <portal:runtime>.
Including built-in protlets e.g. Language Portlet succeeds. But including my own self-developed portlet results in rendering error with following stack trace:
What am I doing wrong? Any Hints?
liferay-faces-version: 4.2.5-ga6
liferay-server: 6.2-ce-ga3
liferay-portlet.xml
portlet.xml
"outer" portlet
included portlet
I'm trying to include a (simple) portlet into another by <portal:runtime>.
Including built-in protlets e.g. Language Portlet succeeds. But including my own self-developed portlet results in rendering error with following stack trace:
Dez 04, 2015 2:06:22 PM org.apache.catalina.core.ApplicationDispatcher invoke
SCHWERWIEGEND: Servlet.service() for servlet liferayportlettest Servlet threw exception
java.lang.NullPointerException
at com.liferay.faces.util.context.internal.FacesContextUtilImpl.release(FacesContextUtilImpl.java:49)
at org.primefaces.context.PrimeFacesContext.release(PrimeFacesContext.java:53)
at com.liferay.faces.bridge.internal.BridgePhaseBaseImpl.cleanup(BridgePhaseBaseImpl.java:120)
at com.liferay.faces.bridge.internal.BridgePhaseRenderImpl.cleanup(BridgePhaseRenderImpl.java:122)
at com.liferay.faces.bridge.internal.BridgePhaseRenderImpl.execute(BridgePhaseRenderImpl.java:107)
at com.liferay.faces.bridge.internal.BridgeImpl.doFacesRequest(BridgeImpl.java:135)
at javax.portlet.faces.GenericFacesPortlet.doView(GenericFacesPortlet.java:258)
at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
at javax.portlet.faces.GenericFacesPortlet.doDispatch(GenericFacesPortlet.java:207)
at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:103)
at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:55)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100)
at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64)
at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:112)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:605)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:544)
at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:583)
at com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:656)
at com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:362)
at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:1233)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at com.liferay.portal.servlet.DirectRequestDispatcher.include(DirectRequestDispatcher.java:57)
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.doDispatch(ClassLoaderRequestDispatcherWrapper.java:78)
at com.liferay.portal.servlet.ClassLoaderRequestDispatcherWrapper.include(ClassLoaderRequestDispatcherWrapper.java:53)
at com.liferay.portlet.PortletContainerImpl._doRender(PortletContainerImpl.java:655)
at com.liferay.portlet.PortletContainerImpl.render(PortletContainerImpl.java:138)
at com.liferay.portlet.SecurityPortletContainerWrapper.render(SecurityPortletContainerWrapper.java:141)
at com.liferay.portlet.RestrictPortletContainerWrapper.render(RestrictPortletContainerWrapper.java:126)
at com.liferay.portal.kernel.portlet.PortletContainerUtil.render(PortletContainerUtil.java:156)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer._render(PortletRenderer.java:125)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer.access$4(PortletRenderer.java:107)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer$PortletRendererCallable.doCall(PortletRenderer.java:180)
at com.liferay.portal.layoutconfiguration.util.PortletRenderer$PortletRendererCallable.doCall(PortletRenderer.java:1)
at com.liferay.portal.kernel.executor.CopyThreadLocalCallable.call(CopyThreadLocalCallable.java:69)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask._runTask(ThreadPoolExecutor.java:682)
at com.liferay.portal.kernel.concurrent.ThreadPoolExecutor$WorkerTask.run(ThreadPoolExecutor.java:593)
at java.lang.Thread.run(Thread.java:745)
14:06:22,589 ERROR [RuntimePageImpl-6][render_portlet_jsp:132] null
java.lang.NullPointerException
at com.liferay.faces.util.context.internal.FacesContextUtilImpl.release(FacesContextUtilImpl.java:49)
at org.primefaces.context.PrimeFacesContext.release(PrimeFacesContext.java:53)
at com.liferay.faces.bridge.internal.BridgePhaseBaseImpl.cleanup(BridgePhaseBaseImpl.java:120)
at com.liferay.faces.bridge.internal.BridgePhaseRenderImpl.cleanup(BridgePhaseRenderImpl.java:122)
at com.liferay.faces.bridge.internal.BridgePhaseRenderImpl.execute(BridgePhaseRenderImpl.java:107)
at com.liferay.faces.bridge.internal.BridgeImpl.doFacesRequest(BridgeImpl.java:135)
at javax.portlet.faces.GenericFacesPortlet.doView(GenericFacesPortlet.java:258)
at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
at javax.portlet.faces.GenericFacesPortlet.doDispatch(GenericFacesPortlet.java:207)
at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:103)
at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:55)
at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100)
at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64)
at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:112)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
F, lastUpdate: 1449237507396, now: 1449237983299, renew: false
What am I doing wrong? Any Hints?
liferay-faces-version: 4.2.5-ga6
liferay-server: 6.2-ce-ga3
liferay-portlet.xml
<!--?xml version="1.0"?-->
<liferay-portlet-app>
<portlet>
<portlet-name>liferay-portlet-test</portlet-name>
<icon>/icon.png</icon>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
<ajaxable>true</ajaxable>
<header-portlet-css>/resources/css/main.css</header-portlet-css>
</portlet>
<portlet>
<portlet-name>liferay-portlet-test-include</portlet-name>
<icon>/icon.png</icon>
<requires-namespaced-parameters>false</requires-namespaced-parameters>
<ajaxable>true</ajaxable>
<header-portlet-css>/resources/css/main.css</header-portlet-css>
</portlet>
</liferay-portlet-app>
portlet.xml
<!--?xml version="1.0"?-->
<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
<portlet>
<portlet-name>liferay-portlet-test</portlet-name>
<display-name>liferay-portlet-test</display-name>
<portlet-class>javax.portlet.faces.GenericFacesPortlet</portlet-class>
<init-param>
<name>javax.portlet.faces.defaultViewId.view</name>
<value>/views/main.xhtml</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>liferay-portlet-test</title>
<short-title>liferay-portlet-test</short-title>
<keywords>liferay-portlet-test</keywords>
</portlet-info>
</portlet>
<portlet>
<portlet-name>liferay-portlet-test-include</portlet-name>
<display-name>liferay-portlet-test-include</display-name>
<portlet-class>javax.portlet.faces.GenericFacesPortlet</portlet-class>
<init-param>
<name>javax.portlet.faces.defaultViewId.view</name>
<value>/views/include.xhtml</value>
</init-param>
<expiration-cache>0</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
</supports>
<portlet-info>
<title>liferay-portlet-test-include</title>
<short-title>liferay-portlet-test-include</short-title>
<keywords>liferay-portlet-test-include</keywords>
</portlet-info>
</portlet>
</portlet-app>
"outer" portlet
[...]
<h:body>
<h:form id="main_form">
<h2>Hello Liferay</h2>
<portal:runtime portletName="82" />
<portal:runtime portletName="liferayportlettestinclude_WAR_liferayportlettestportlet" />
</h:form>
</h:body>
[...]
included portlet
[...]
<h:body>
<h:form id="main_form">
<h2>Hello include</h2>
</h:form>
</h:body>
[...]
Juan Gonzalez, módosítva 8 év-val korábban
RE: including self-developed portlet with <portal:runtime>
Liferay Legend Bejegyzések: 3089 Csatlakozás dátuma: 2008.10.28. Legújabb bejegyzések
Can you try checking these two things?:
If that doesn't work, please attach here that sample portlet..
Thanks!
- Remove <ajaxable> from liferay-portlet.xml for both portlets
- Try with 6.2 CE GA5
If that doesn't work, please attach here that sample portlet..
Thanks!
Stefan Finke, módosítva 8 év-val korábban
RE: including self-developed portlet with <portal:runtime>
New Member Bejegyzések: 8 Csatlakozás dátuma: 2014.06.03. Legújabb bejegyzések
Hello Juan. Thank you for your quick reply.
I removed <ajaxable> tag and installed Liferay 6.2 CE ga5.
I also removed some needless (primefaces) dependencies from my project.
Tried again. No effect.
So I attached my sample project's archive...
I removed <ajaxable> tag and installed Liferay 6.2 CE ga5.
I also removed some needless (primefaces) dependencies from my project.
Tried again. No effect.
So I attached my sample project's archive...
Mellékletek:
Juan Gonzalez, módosítva 8 év-val korábban
RE: including self-developed portlet with <portal:runtime>
Liferay Legend Bejegyzések: 3089 Csatlakozás dátuma: 2008.10.28. Legújabb bejegyzések
Hi Stephan,
thanks for the sample portlet. Vacation days in Spain until Wednesday. Will check this then.
thanks for the sample portlet. Vacation days in Spain until Wednesday. Will check this then.
Juan Gonzalez, módosítva 8 év-val korábban
RE: including self-developed portlet with <portal:runtime>
Liferay Legend Bejegyzések: 3089 Csatlakozás dátuma: 2008.10.28. Legújabb bejegyzések
Hi Stefan,
thanks again! I could reproduce the issue and created a new ticket: https://issues.liferay.com/browse/FACES-2527.
Meanwhile, as a workaround, can you separate both include and "parent" portlets as different portlet projects? This way works fine. BTW, when naming a project don't include "portlet" in it's name, as that is used by Liferay to differentiate plugin types. All text after "-portlet" will be ignored.
Thanks!
thanks again! I could reproduce the issue and created a new ticket: https://issues.liferay.com/browse/FACES-2527.
Meanwhile, as a workaround, can you separate both include and "parent" portlets as different portlet projects? This way works fine. BTW, when naming a project don't include "portlet" in it's name, as that is used by Liferay to differentiate plugin types. All text after "-portlet" will be ignored.
Thanks!