PropertyNotFoundException, problem with a EL-attribute mapp
vlaugier Sep 18, 2007 2:24 PMHello,
this surely is a very dumb mistake but I cannot find it
I have a very simple entities model : one class Client
In a first time, I am creating the clients (without defining the parentClient attribute) with an autogenerated CRUD form, this works
I then want to list the generated clients in a datatable on an other page but I get the following error when going to the page :
Bean: org.javassist.tmp.java.lang.Object_$$_javassist_79, property: clients - Stack Trace javax.el.PropertyNotFoundException: Bean: org.javassist.tmp.java.lang.Object_$$_javassist_79, property: clients at com.sun.facelets.el.LegacyELContext$LegacyELResolver.getValue(LegacyELContext.java:146) at com.sun.el.parser.AstValue.getValue(AstValue.java:125) at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:195) at com.sun.facelets.el.ELText$ELTextVariable.toString(ELText.java:174) at com.sun.facelets.el.ELText$ELTextComposite.toString(ELText.java:115) at com.sun.facelets.compiler.CommentInstruction.write(CommentInstruction.java:38) at com.sun.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:39) at org.ajax4jsf.framework.renderer.RendererBase.renderChild(RendererBase.java:280) at org.ajax4jsf.framework.renderer.RendererBase.renderChildren(RendererBase.java:262) at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:189) at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:184) at org.ajax4jsf.framework.renderer.RendererBase.encodeChildren(RendererBase.java:121) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:524) at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:244) at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249) at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:573) at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108) at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:229) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63) at org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79) at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96) at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) at java.lang.Thread.run(Thread.java:595)
Here is my entityBean :
package portalInterventionPart.model; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.GeneratedValue; import javax.persistence.Table; import javax.persistence.Version; import org.hibernate.validator.Length; @Entity @Table(name="CLIENT") public class Client implements Serializable { //seam-gen attributes (you should probably edit these) private Long id; private Integer version; private String name; private String title; private Client parent; //add additional entity attributes //seam-gen attribute getters/setters with annotations (you probably should edit) @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Version public Integer getVersion() { return version; } private void setVersion(Integer version) { this.version = version; } @Length(max=20) public String getName() { return name; } public void setName(String name) { this.name = name; } @Length(max=20) public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Client getParent() { return parent; } public void setParent(Client parent) { this.parent = parent; } }
Here is the parentMgr.xhtml :
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.ajax4jsf.org/rich" xmlns:a="https://ajax4jsf.dev.java.net/ajax" template="layout/template.xhtml"> <ui:define name="body"> <h:messages globalOnly="true" styleClass="message"/> <h:form id="parentMgrForm"> <rich:panel> <f:facet name="header">parentMgr</f:facet> <h:dataTable value="#{parentMgr.clients}" var="client"> <h:column> #{client.name} </h:column> </h:dataTable> <s:decorate id="valueDecoration" template="layout/edit.xhtml"> <ui:define name="label">Value</ui:define> <h:inputText id="value" required="true" value="#{parentMgr.value}"/> </s:decorate> <div style="clear:both"/> </rich:panel> <div class="actionButtons"> <h:commandButton id="parentMgr" value="parentMgr" action="#{parentMgr.parentMgr}"/> </div> </h:form> </ui:define> </ui:composition>
And the ParentMgrBean.java
package portalInterventionPart.model; import java.util.List; import javax.ejb.Remove; import javax.ejb.Stateful; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Destroy; import org.jboss.seam.annotations.Logger; import org.jboss.seam.log.Log; import org.jboss.seam.core.FacesMessages; import org.hibernate.validator.Length; import org.jboss.seam.annotations.Scope; import static org.jboss.seam.ScopeType.SESSION; import org.jboss.seam.annotations.Create; @Stateful @Name("parentMgr") @Scope(SESSION) public class ParentMgrBean implements ParentMgr { @PersistenceContext private EntityManager em; @Logger private Log log; @In FacesMessages facesMessages; //@DataModel private List<Client> clients ; private String value; public void parentMgr() { //implement your business logic here log.info("parentMgr.parentMgr() action called with: #{parentMgr.value}"); facesMessages.add("parentMgr #{parentMgr.value}"); } //add additional action methods @Length(max=10) public String getValue() { return value; } public void setValue(String value) { this.value = value; } public List<Client> getClients() { return clients; } public void setClients(List<Client> clients) { this.clients = clients; } //@Factory("clients") @Create public void find(){ this.clients = em.createQuery("select c from Client c").getResultList(); } @Destroy @Remove public void destroy() {} }
I am using jboss4.0 with ejb3 support and sem 1.2.1
thanks for your help