Simon,

Thanks for the quick response however, the object is a session scoped
managed bean.  So it would still be available.

When I changed the code to
manageAdminAobject.bobjectList[0].eobject.value the code worked, however
when I tried to set up the varStatus's index to replace the hard coded 0
it failed.

Thanks,

Bob

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, April 22, 2008 11:28 AM
To: MyFaces Discussion
Subject: Re: Referencing Complex Objects inside a table

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.he
ader']}"
>
>                                         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.l
abel']}"
>
>                                                                
> value="#{manageAdminAobject.zvalue}" />
>                                                         <tr:inputText
>                                                                
>
label="#{messages['com.eds.employeetracker.entity.admin.Aobject.avalue.l
abel']}"
>
>                                                                
> value="#{manageAdminAobject.avalue}" />
>                                                         <tr:table 
> id="bobjectListTable"
>                                                                
> value="#{manageAdminAobject.bobjectList}" var="bobjectList">
>
>                                                                
> <tr:column
>                                                                
>        
> headerText="#{messages['com.eds.employeetracker.entity.admin.Eobject.e
> value.label']}">
>
>                                                                
>         <tr:inputText
>                                                                
>                
>
label="#{messages['com.eds.employeetracker.entity.admin.Eobject.evalue.l
abel']}"
>
>                                                                
>                 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,org.apache.myfaces.trinidadinternal.context.FacesContextFactoryImpl$
> [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.isReadOnl
> y(_ValueBindingValueExpression.java:83_)
>
>         at
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.EditableValue
> Renderer.getReadOnly(_EditableValueRenderer.java:244_)
>
>         at
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.FormElementRe
> nderer.renderAsElement(_FormElementRenderer.java:217_)
>
>         at
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.InputLabelAnd
> MessageRenderer.getLabelFor(_InputLabelAndMessageRenderer.java:78_)
>
>         at
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.LabelAndMessa
> geRenderer$Label.getForId(_LabelAndMessageRenderer.java:617_)
>
>         at
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.OutputLabelRe
> nderer.encodeAll(_OutputLabelRenderer.java:89_)
>
>         at
> org.apache.myfaces.trinidad.render.CoreRenderer.delegateRenderer(_Core
> Renderer.java:330_)
>
>         at
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.LabelAndMessa
> geRenderer.encodeAll(_LabelAndMessageRenderer.java:193_)
>
>         at
> org.apache.myfaces.trinidadinternal.renderkit.core.xhtml.InputLabelAnd
> MessageRenderer.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
>

Reply via email to