Hi Steve,
 
i don't know why the exception is thrown. But could you try the
following solution:
 
<tr:table var="wrapper" value="#{backer.list}"> 
    <f:facet name="detailStamp">
        <pmb:businessEntityList backer="#{wrapper.entityBacker}" >
            <f:attribute name="binding"
value="#{wrapper.entityBacker.listTable}"/>
        </pmb:businessEntityList>
    </f:facet>
    <tr:column>
        <!-- some stuff goes here -->
    </tr:column>
</tr:table>
 
<tr:table var="sub" value="#{backer.list}">
    <f:facet name="footer">
        <pmb:brokeredActions />
    </f:facet>
    <f:facet name="selection">
        <tr:selectManyCheckbox /> 
    </f:facet>
    <tr:column>
        <!-- some stuff goes here -->
    </tr:column>
    <ui:insert/>
</tr:table>

Regards,

Sven
________________________________

Von: Steve Horne [mailto:[EMAIL PROTECTED] 
Gesendet: Montag, 14. Januar 2008 21:00
An: MyFaces Discussion
Betreff: [Trinidad] tr:table "binding" attribute problem


I am using Facelets and Trinidad 1.0.4.

I have a <tr:table> that has a "detailStamp" facet which contains
another table.  It is this inner table with which I am having problems.
Here is the outer table: 

                <tr:table first="0" rows="10" var="wrapper"
value="#{backer.list}" rowBandingInterval="1"
emptyText="#{labels['Global.search.notFound']}"> 
                    <f:facet name="detailStamp">
                        <pmb:businessEntityList
backer="#{wrapper.entityBacker}" />
                    </f:facet>
                    <tr:column> 
                        <f:facet name="header">Business Category
Name</f:facet>#{wrapper.businessCategory.name}</tr:column>
                    <tr:column> 
                        <f:facet name="header">Business Category
Description</f:facet>#{wrapper.businessCategory.desc}</tr:column>
                </tr:table>


The contents of the detailStamp are a custom facelet that includes this
table:

<tr:table first="0" rows="10" var="sub" value="#{backer.list}"
rowSelection="multiple" rowBandingInterval="1" emptyText="#{labels['
Global.search.notFound']}">
    <f:facet name="footer">
        <pmb:brokeredActions />
    </f:facet>
    <f:facet name="selection">
        <tr:selectManyCheckbox /> 
    </f:facet>
    <tr:column>
        <f:facet
name="header">#{labels['BusinessEntity.name']}</f:facet>#{sub.name}</tr:
column>
    <tr:column> 
        <f:facet
name="header">#{labels['BusinessEntity.desc']}</f:facet>#{sub.desc}</tr:
column>
</tr:table>

As you can see, the innermost facelet is passed a parameter "backer".
This all works perfectly UNLESS I put a binding attribute on the
innermost table: 

<tr:table binding="#{backer.listTable}" ...

This causes an exception:

javax.faces.el.PropertyNotFoundException:
/components/lob/businessEntity/list.xhtml @24,223
binding="#{backer.listTable }": Target Unreachable, identifier 'backer'
resolved to null
    at
com.sun.facelets.el.LegacyValueBinding.setValue(LegacyValueBinding.java:
72)
    at org.apache.myfaces.application.ApplicationImpl.createComponent
(ApplicationImpl.java:447)
    at
com.sun.facelets.tag.jsf.ComponentHandler.createComponent(ComponentHandl
er.java:237)
    at
com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:13
9)
    at com.sun.facelets.tag.UserTagHandler.apply
(UserTagHandler.java:122)

I think this has something to do with the time at which the evaluation
happens for the binding attribute.  By removing the binding, the
innermost table works perfectly, meaning the identifier "backer" does
NOT resolve to null. 

Any help or insight into this problem would be appreciated.

Steve

-- 
"Many men go fishing all of their lives without knowing it is not fish
they are after."

- Henry David Thoreau 

Reply via email to