My guess would be that you have everything set up correctly for render. But that on postback your bobject list contains uninitialised objects. Primitive values on it will be reassigned from the posted data so maybe you didn't notice.
Is your manageAdminAobject in request scope? I have not heard of any EL bug that correctly resolves expressions during render phase, but fails during postback phase. Regards, Simon Butash, Bob schrieb: > > Hello, > > I'm in need of some assistance. I have a complex object hierarchy > that I'm trying to create a JSF view for. I have simplified it to the > point where I still get the error. Here is the setup: > > Aobject that contains a list of Bobjects. Bobject contains an Eobject > and then Eobject has a value attribute. > > Here is what I was trying to do in the jspx, note I am using Trinidad > with facelets: > > <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0" > xmlns:ui="http://java.sun.com/jsf/facelets" > xmlns:h="http://java.sun.com/jsf/html" > xmlns:f="http://java.sun.com/jsf/core" > xmlns:tr="http://myfaces.apache.org/trinidad"> > <ui:composition template="/view/template.jspx"> > <ui:define name="content"> > <h:form> > <tr:panelHeader > > text="#{messages['com.eds.employeetracker.entity.admin.Aobject.search.header']}" > > messageType="none" /> > <tr:panelHorizontalLayout halign="left"> > <tr:panelFormLayout> > <tr:panelBox > background="transparent" inlineStyle="width: 100%;"> > <tr:panelHeader > > text="#{messages['com.eds.employeetracker.entity.admin.Aobject.label']}" > /> > > <tr:inputText > > label="#{messages['com.eds.employeetracker.entity.admin.Zobject.zvalue.label']}" > > > value="#{manageAdminAobject.zvalue}" /> > <tr:inputText > > label="#{messages['com.eds.employeetracker.entity.admin.Aobject.avalue.label']}" > > > value="#{manageAdminAobject.avalue}" /> > <tr:table > id="bobjectListTable" > > value="#{manageAdminAobject.bobjectList}" var="bobjectList"> > > > <tr:column > > > headerText="#{messages['com.eds.employeetracker.entity.admin.Eobject.evalue.label']}"> > > > <tr:inputText > > > label="#{messages['com.eds.employeetracker.entity.admin.Eobject.evalue.label']}" > > > value="#{bobjectList.eobject.evalue}" /> > > > </tr:column> > </tr:table> > > <tr:panelButtonBar> > > <tr:commandButton text="#{messages['command.label.add']}" > > > action="#{view$admin$aobjectManage.addAction}" /> > > > </tr:panelButtonBar> > </tr:panelBox> > </tr:panelFormLayout> > </tr:panelHorizontalLayout> > </h:form> > </ui:define> > </ui:composition> > </jsp:root> > > The page renders properly, however when I try to submit the page I get > the following error: > > WARNING: executePhase(RENDER_RESPONSE > 6,[EMAIL PROTECTED]) > threw exception > > _javax.el.ELException_: /view/admin/aobjectManage.jspx @29,51 > value="#{bobjectList.eobject.evalue}": Target Unreachable, 'eobject' > returned null > > at > org.apache.myfaces.trinidad.bean.ValueBindingValueExpression.isReadOnly(_ValueBindingValueExpression.java:83_) > > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.EditableValueRenderer.getReadOnly(_EditableValueRenderer.java:244_) > > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.FormElementRenderer.renderAsElement(_FormElementRenderer.java:217_) > > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.InputLabelAndMessageRenderer.getLabelFor(_InputLabelAndMessageRenderer.java:78_) > > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.LabelAndMessageRenderer$Label.getForId(_LabelAndMessageRenderer.java:617_) > > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.OutputLabelRenderer.encodeAll(_OutputLabelRenderer.java:89_) > > at > org.apache.myfaces.trinidad.render.CoreRenderer.delegateRenderer(_CoreRenderer.java:330_) > > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.LabelAndMessageRenderer.encodeAll(_LabelAndMessageRenderer.java:193_) > > at > org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.InputLabelAndMessageRenderer.encodeAll(_InputLabelAndMessageRenderer.java:120_) > > As stated the page does render fine as well as I do have the Aobject's > list of Bobjects initilized, as well as the Bobject's Eobject is > initialized > > * if* (manageAdminAobject.getId() ==* null*) > { > manageAdminAobject.getBobjectList().add( > * new* > com.eds.employeetracker.entity.admin.Bobject()); > manageAdminAobject.getBobjectList().get(0).setEobject( > * new* > com.eds.employeetracker.entity.admin.Eobject()); > setManagedBean("manageAdminAobject", manageAdminAobject); > } > > It seems that it doesn't handle a complex nested objects, as there are > no issues with any non-complex value that is directly on the Bobject. > Has anyone else seen this behavior and is there a way around it?? > > Any help would be greatly appreciated as, like most people, I'm under > a huge time crunch to get the working. > > Thanks, > > Bob >

