jsf - Composite component PropertyNotFoundException: UINamingContainer does not have the property -
i made composite component upload files have datatable (to show uploaded files) this:
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:h="http://java.sun.com/jsf/html" xmlns:composite="http://java.sun.com/jsf/composite" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"> <head> <title>file upload component</title> </head> <body> <composite:interface componenttype="components.customfileupload"> <composite:attribute name="list" required="true" type="java.util.list" /> <<more attributes>> </composite:interface> <composite:implementation> <div id="#{cc.clientid}"> <f:event type="prerendercomponent" listener="#{cc.init()}"/> <p:datatable id="fileuploadtable" value="#{cc.list}" var="n"> <<datatable content>> </p:datatable> <p:fileupload fileuploadlistener="#{cc.handlefileupload}" mode="advanced" dragdropsupport="false" /> </div> </composite:implementation> </body> </html> and backing component
@facescomponent(value="components.customfileupload") public class customfileupload extends uiinput implements namingcontainer, serializable { private list<fileuploaditem> list; @override public void restorestate(facescontext context, object state) { object values[] = (object[]) state; super.restorestate(context, values[0]); list = (list<fileuploaditem>) values[1]; } @override public object savestate(facescontext context) { object[] values = new object[2]; values[0] = super.savestate(context); values[1] = list; return values; } public void init() { valueexpression expr = super.getvalueexpression("list"); elcontext ctx = super.getfacescontext().getelcontext(); this.list = (list<fileuploaditem>) expr.getvalue(ctx); } public list<fileuploaditem> getlist() { return list; } <<more code>> using
<mpc:fileupload list="#{mybean.fileuploadlist}" /> when use alone works ok, when use composite component in same page throws exception:
exception type: class javax.el.propertynotfoundexception exception message: .../fileupload.xhtml @59,100 value="#{cc.list}": class 'javax.faces.component.uinamingcontainer' not have property 'list'. i've more composite components works fine together. exception occurs fileupload. problem seems similar this topic, in case composite components doesn't nested.
edit: composite component used mpc:fileupload mpc:balloon uses primefaces overlaypanel, like:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:composite="http://java.sun.com/jsf/composite" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui"> <head> <title>baloon component</title> </head> <body> <composite:interface> <composite:attribute name="for" /> <composite:attribute name="dynamic" default="true" /> </composite:interface> <composite:implementation> <p:overlaypanel for="@parent:@parent:@parent:#{cc.attrs.for}" dynamic="cc.attrs.dynamic" widgetvar="#{fn:replace(cc.clientid, ':', '_')}_widgetvar" showevent="mouseover" hideevent="mouseout" dismissable="false" appendtobody="true" onshow="onshowoverlaypanel(this)"> <composite:insertchildren /> </p:overlaypanel> </composite:implementation> </body> </html> stack trace
javax.el.propertynotfoundexception: ../fileupload.xhtml @58,100 value="#{cc.list}": class 'javax.faces.component.uinamingcontainer' not have property 'list'. @ com.sun.faces.facelets.el.tagvalueexpression.getvalue(tagvalueexpression.java:111) @ javax.faces.component.componentstatehelper.eval(componentstatehelper.java:194) @ javax.faces.component.componentstatehelper.eval(componentstatehelper.java:182) @ javax.faces.component.uidata.getvalue(uidata.java:730) @ org.primefaces.component.api.uidata.getdatamodel(uidata.java:764) @ org.primefaces.component.api.uidata.setrowmodel(uidata.java:571) @ org.primefaces.component.api.uidata.setrowindexwithoutrowstatepreserved(uidata.java:564) @ org.primefaces.component.api.uidata.setrowindex(uidata.java:473) @ javax.faces.component.uidata.invokeoncomponent(uidata.java:1039) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ org.primefaces.component.api.uitabpanel.invokeoncomponent(uitabpanel.java:798) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ javax.faces.component.uicomponent.invokeoncomponent(uicomponent.java:1466) @ javax.faces.component.uicomponentbase.invokeoncomponent(uicomponentbase.java:671) @ org.primefaces.util.componenttraversalutils.firstbyid(componenttraversalutils.java:151) @ org.primefaces.expression.searchexpressionfacade.resolvecomponentbyid(searchexpressionfacade.java:521) @ org.primefaces.expression.searchexpressionfacade.resolveclientids(searchexpressionfacade.java:246) @ org.primefaces.util.ajaxrequestbuilder.addexpressions(ajaxrequestbuilder.java:93) @ org.primefaces.util.ajaxrequestbuilder.update(ajaxrequestbuilder.java:86) @ org.primefaces.renderkit.corerenderer.buildajaxrequest(corerenderer.java:389) @ org.primefaces.component.commandbutton.commandbuttonrenderer.buildrequest(commandbuttonrenderer.java:130) @ org.primefaces.component.commandbutton.commandbuttonrenderer.encodemarkup(commandbuttonrenderer.java:69) @ org.primefaces.component.commandbutton.commandbuttonrenderer.encodeend(commandbuttonrenderer.java:54) @ javax.faces.component.uicomponentbase.encodeend(uicomponentbase.java:877) @ com.sun.faces.renderkit.html_basic.htmlbasicrenderer.encoderecursive(htmlbasicrenderer.java:312) @ com.sun.faces.renderkit.html_basic.grouprenderer.encodechildren(grouprenderer.java:105) @ javax.faces.component.uicomponentbase.encodechildren(uicomponentbase.java:847) @ org.primefaces.renderkit.corerenderer.renderchild(corerenderer.java:85) @ org.primefaces.renderkit.corerenderer.renderchildren(corerenderer.java:72) @ org.primefaces.component.overlaypanel.overlaypanelrenderer.encodemarkup(overlaypanelrenderer.java:59) @ org.primefaces.component.overlaypanel.overlaypanelrenderer.encodeend(overlaypanelrenderer.java:37) @ javax.faces.component.uicomponentbase.encodeend(uicomponentbase.java:877) @ com.sun.faces.renderkit.html_basic.htmlbasicrenderer.encoderecursive(htmlbasicrenderer.java:312) @ com.sun.faces.renderkit.html_basic.grouprenderer.encodechildren(grouprenderer.java:105) @ javax.faces.component.uicomponentbase.encodechildren(uicomponentbase.java:847) @ javax.faces.component.uicomponent.encodeall(uicomponent.java:1819) @ com.sun.faces.renderkit.html_basic.compositerenderer.encodechildren(compositerenderer.java:78) @ javax.faces.component.uicomponentbase.encodechildren(uicomponentbase.java:847) @ com.sun.faces.renderkit.html_basic.htmlbasicrenderer.encoderecursive(htmlbasicrenderer.java:304) @ com.sun.faces.renderkit.html_basic.grouprenderer.encodechildren(grouprenderer.java:105) @ javax.faces.component.uicomponentbase.encodechildren(uicomponentbase.java:847) @ javax.faces.component.uicomponent.encodeall(uicomponent.java:1819) @ com.sun.faces.context.partialviewcontextimpl$phaseawarevisitcallback.visit(partialviewcontextimpl.java:543) @ com.sun.faces.component.visit.partialvisitcontext.invokevisitcallback(partialvisitcontext.java:183) @ javax.faces.component.uicomponent.visittree(uicomponent.java:1652) @ org.primefaces.component.api.uidata.visitcolumncontent(uidata.java:1014) @ org.primefaces.component.api.uidata.visitrows(uidata.java:988) @ org.primefaces.component.api.uidata.visittree(uidata.java:842) @ javax.faces.component.uicomponent.visittree(uicomponent.java:1663) @ javax.faces.component.uicomponent.visittree(uicomponent.java:1663) @ org.primefaces.component.api.uitabpanel.visittree(uitabpanel.java:920) @ javax.faces.component.uicomponent.visittree(uicomponent.java:1663) @ javax.faces.component.uicomponent.visittree(uicomponent.java:1663) @ javax.faces.component.uicomponent.visittree(uicomponent.java:1663) @ javax.faces.component.uiform.visittree(uiform.java:362) @ javax.faces.component.uicomponent.visittree(uicomponent.java:1663) @ javax.faces.component.uicomponent.visittree(uicomponent.java:1663) @ com.sun.faces.context.partialviewcontextimpl.processcomponents(partialviewcontextimpl.java:383) @ com.sun.faces.context.partialviewcontextimpl.processpartial(partialviewcontextimpl.java:302) @ javax.faces.context.partialviewcontextwrapper.processpartial(partialviewcontextwrapper.java:183) @ org.primefaces.context.primepartialviewcontext.processpartial(primepartialviewcontext.java:57) @ javax.faces.component.uiviewroot.encodechildren(uiviewroot.java:973) @ javax.faces.component.uicomponent.encodeall(uicomponent.java:1819) @ com.sun.faces.application.view.faceletviewhandlingstrategy.renderview(faceletviewhandlingstrategy.java:421) @ com.sun.faces.application.view.multiviewhandler.renderview(multiviewhandler.java:125) @ javax.faces.application.viewhandlerwrapper.renderview(viewhandlerwrapper.java:286) @ javax.faces.application.viewhandlerwrapper.renderview(viewhandlerwrapper.java:286) @ javax.faces.application.viewhandlerwrapper.renderview(viewhandlerwrapper.java:286) @ com.sun.faces.lifecycle.renderresponsephase.execute(renderresponsephase.java:120) @ com.sun.faces.lifecycle.phase.dophase(phase.java:101) @ com.sun.faces.lifecycle.lifecycleimpl.render(lifecycleimpl.java:139) @ javax.faces.webapp.facesservlet.service(facesservlet.java:594) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:295) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:214) @ org.primefaces.webapp.filter.fileuploadfilter.dofilter(fileuploadfilter.java:100) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:246) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:214) @ org.omnifaces.filter.facesexceptionfilter.dofilter(facesexceptionfilter.java:56) @ org.omnifaces.filter.httpfilter.dofilter(httpfilter.java:77) @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:246) @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:214) @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:231) @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:149) @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:512) @ org.jboss.as.web.security.securitycontextassociationvalve.invoke(securitycontextassociationvalve.java:169) @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:150) @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:97) @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:102) @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:344) @ org.apache.coyote.http11.http11processor.process(http11processor.java:854) @ org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.java:653) @ org.apache.tomcat.util.net.jioendpoint$worker.run(jioendpoint.java:926) @ java.lang.thread.run(thread.java:745)
Comments
Post a Comment