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