Foros de discusión

Try to use JSF composite component inside portlet

stephen zambaux, modificado hace 9 años.

Try to use JSF composite component inside portlet

Junior Member Mensajes: 63 Fecha de incorporación: 3/10/14 Mensajes recientes
HI, I try to use JSF composite component inside my jsf Portlet and I have this error:

java.lang.NullPointerException: Erreur d’argument : le paramètre «url» est null.
	at com.sun.faces.util.Util.notNull(Util.java:303)
	at com.sun.faces.facelets.impl.DefaultFaceletCache.isFaceletCached(DefaultFaceletCache.java:126)
	at com.sun.faces.facelets.impl.DefaultFaceletFactory.needsToBeRefreshed(DefaultFaceletFactory.java:278)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.getComponentMetadata(FaceletViewHandlingStrategy.java:229)
	at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:937)
	at javax.faces.application.ApplicationWrapper.createComponent(ApplicationWrapper.java:605)
	at org.jboss.weld.environment.servlet.jsf.ForwardingApplication.createComponent(ForwardingApplication.java:103)
	at com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.createComponent(CompositeComponentTagHandler.java:162)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.createComponent(ComponentTagHandlerDelegateImpl.java:494)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:169)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:187)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
	at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:187)
	at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
	at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
	at com.sun.faces.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:188)
	at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
	at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87)
	at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:164)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:906)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at com.liferay.faces.bridge.BridgePhaseRenderImpl.execute(BridgePhaseRenderImpl.java:227)
	at com.liferay.faces.bridge.BridgePhaseRenderImpl.execute(BridgePhaseRenderImpl.java:85)
	at com.liferay.faces.bridge.BridgeImpl.doFacesRequest(BridgeImpl.java:112)
	at javax.portlet.faces.GenericFacesPortlet.doView(GenericFacesPortlet.java:255)
	at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
	at javax.portlet.faces.GenericFacesPortlet.doDispatch(GenericFacesPortlet.java:204)
	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.cdi.portlet.bridge.CDIPortletFilter.doFilter(CDIPortletFilter.java:96)
	at sun.reflect.GeneratedMethodAccessor453.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:67)
	at com.sun.proxy.$Proxy516.doFilter(Unknown Source)
	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:727)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116)
	at org.jboss.weld.servlet.WeldCrossContextFilter.doFilter(WeldCrossContextFilter.java:62)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
	at com.liferay.cdi.portlet.bridge.CDICrossContextFilter.doFilter(CDICrossContextFilter.java:49)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)
	at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)
	at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:604)
	at com.liferay.portlet.InvokerPortletImpl.invokeRender(InvokerPortletImpl.java:677)
	at com.liferay.portlet.InvokerPortletImpl.render(InvokerPortletImpl.java:379)
	at org.apache.jsp.html.portal.render_005fportlet_jsp._jspService(render_005fportlet_jsp.java:1230)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
	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:120)
	at com.liferay.portal.layoutconfiguration.util.PortletRenderer.access$4(PortletRenderer.java:107)
	at com.liferay.portal.layoutconfiguration.util.PortletRenderer$PortletRendererCallable.doCall(PortletRenderer.java:174)
	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:266)
	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)



my component yesNoInput.xhtml:
<!--?xml version="1.0" encoding="UTF-8"?-->




<composite:interface>
	<composite:attribute name="id" />
	<composite:attribute name="value" />
	<composite:attribute name="update" />
	<composite:attribute name="styleClass" />	
	<composite:attribute name="action" method-signature="java.lang.Void listener())" />
</composite:interface>
<composite:implementation>
	<p:selectoneradio value="#{cc.attrs.value}" styleclass="#{cc.attrs.styleClass}" style="padding:5px">
		<f:selectitem id="#{cc.attrs.id}_yes" itemValue="#{true}" itemLabel="#{msg['oui']}" />
		<f:selectitem id="#{cc.attrs.id}_no" itemValue="#{false}" itemLabel="#{msg['non']}" />
		<p:ajax update="#{cc.attrs.update}" listener="#{cc.attrs.action}"></p:ajax>
	</p:selectoneradio>
</composite:implementation>



in my view:
<f:view xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:it="http://java.sun.com/jsf/composite/component">
<it:yesnoinput id="haveAttachement" styleClass="haveAttachement" value="#{uploadInvoiceController.haveAttachment}" />


</f:view>
thumbnail
David H Nebinger, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Liferay Legend Mensajes: 14919 Fecha de incorporación: 2/09/06 Mensajes recientes
Looks like you're missing a url attribute which is why you're getting the null failure on it.
stephen zambaux, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Junior Member Mensajes: 63 Fecha de incorporación: 3/10/14 Mensajes recientes
when I use these components in jboss7 without liferay I don't have any url missing problem
thumbnail
David H Nebinger, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Liferay Legend Mensajes: 14919 Fecha de incorporación: 2/09/06 Mensajes recientes
All that says to me is that within a servlet world the components have different requirements than in the portlet world.
thumbnail
Neil Griffin, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Liferay Legend Mensajes: 2655 Fecha de incorporación: 27/07/05 Mensajes recientes
The following line in the stacktrace indicates that weld-servlet.jar might be in your WEB-INF/lib folder of your deployed portlet WAR:
at org.jboss.weld.environment.servlet.jsf.ForwardingApplication.createComponent(ForwardingApplication.java:103)

If that is the case then please remove the weld-servlet.jar dependency since it is not necessary in JBoss AS7.
stephen zambaux, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Junior Member Mensajes: 63 Fecha de incorporación: 3/10/14 Mensajes recientes
Sorry, I use Tomcat7, i was just saying that my components comes from a jboss7 servlet project
thumbnail
Neil Griffin, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Liferay Legend Mensajes: 2655 Fecha de incorporación: 27/07/05 Mensajes recientes
Hi Stephen,

When you get a chance, please try downloading the Liferay 6.2 version of the jsf2-cdi-portlet demo WAR and let us know if it works in your environment.

Thanks,

Neil
stephen zambaux, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Junior Member Mensajes: 63 Fecha de incorporación: 3/10/14 Mensajes recientes
Hi Neil, it's ok with your WAR, I think you don't use composite component inside, do you?
thumbnail
Neil Griffin, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Liferay Legend Mensajes: 2655 Fecha de incorporación: 27/07/05 Mensajes recientes
Hi Stephen,

I'm glad to hear that the jsf2-cdi-portlet demo WAR worked in your environment. It does indeed feature three composite components.

Kind Regards,

Neil
stephen zambaux, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Junior Member Mensajes: 63 Fecha de incorporación: 3/10/14 Mensajes recientes
Hi Neil, by comparing WARs, I found structures differences, I have now the same structure and it's ok, thank you for alll, it's works well.

Regards
thumbnail
Neil Griffin, modificado hace 9 años.

RE: Try to use JSF composite component inside portlet

Liferay Legend Mensajes: 2655 Fecha de incorporación: 27/07/05 Mensajes recientes
Hi Stephen,

I'm glad to hear that it is working for you now. Thanks for using Liferay Faces emoticon

Neil