Hi,
Sorry I was absent for a moment, today I'm back at work.
So the problem is that <tc:sheet doesn't support java.util.Set collections.
Why don't you just throw an IllegalArgumentException rather than passing the
Set to the page scope under the varibale specified in *var *?
This is very confusing, it seems there's a problem with the page tags, and
since there's no way to compile JSF syntax, it'd be better to give a runtime
compilation...
Is there a reason why Sets are not supported? is it because of the fact
there's no id to maintain?
Regards,
Zied
2007/9/8, Zied Hamdi <[EMAIL PROTECTED]>:
>
> Hi again,
>
> I woke up remembering this problem happens when I don't surround my
> element by tc:column tags. So I decided to take a look so I don't feel
> stupid, and I found extra tc:column tags. After correcting the problem:
>
>
> <tc:sheet id= "adressesSheet" var ="adress" showHeader="false"
>
> value ="#{personCtrl.adresses}" columns= "1*"
>
> binding ="#{personCtrl.adressTable}" >
>
> < tc:column>
>
> < tc:panel>
>
> < f:facet name ="layout" >
>
> < tc:gridLayout columns ="10px;1*;10px"
> />
>
> </ f:facet>
>
>
>
> < ui:include src ="/person/adress.xhtml" />
>
>
>
> </tc:panel >
>
> </tc:column >
>
> </tc:sheet>
>
>
> Nothing has changed : I still have the problem with ui:include, and it
> still disappears when I use jsp:include instead...
>
> Anyway, the 'adress' variable should never be equal to #{
> personCtrl.adresses}, which is my case...
>
> Regards,
> Zied
>
> 2007/9/7, Zied Hamdi <[EMAIL PROTECTED]>:
> >
> > Hi,
> >
> > I hezitated for a while before sending this post, it seems impossible to
> > me.
> >
> > Again under facelets (maybe it's due to the nightbuild of 05.09 but I
> > don't think the junit didn't try this) I have a problem I didn't have with
> > "plain" jsp:
> >
> > /person/adressListBox.xhtml
> > ...
> > < tc:sheet id= "adressesSheet" var ="adress1" showHeader="false"
> >
> > value ="#{personCtrl.adresses}" columns = "1*"
> >
> > binding ="#{personCtrl.adressTable}" >
> >
> > < tc:column>
> >
> > < tc:panel>
> >
> > < f:facet name ="layout" >
> >
> > < tc:gridLayout columns ="10px;1*;10px"
> > />
> >
> > </ f:facet>
> >
> >
> >
> > < tc:column />
> >
> >
> >
> > * < f:subview id = "personAdressList" >*
> >
> > * < ui:include src ="/person/adress.xhtml"
> > >*
> >
> > * < c:set value = "#{adress1[0]}"
> > var= "adress"></ c:set > *
> >
> > * </ ui:include> *
> >
> > * </ f:subview> *
> >
> >
> >
> > < tc:column />
> >
> >
> >
> > </ tc:panel >
> >
> > </tc:column >
> >
> > </tc:sheet >
> > ...
> >
> > The error I receive here is :
> >
> > Caused by: *javax.el.PropertyNotFoundException* : /person/adress.xhtml
> > @18,52 value="#{adress.specifier }": /person/adressListBox.xhtml @64,50
> > *value="#{adress1[0]}": Property '0' not found on type
> > org.hibernate.collection.PersistentSet *
> >
> > at com.sun.facelets.el.TagValueExpression.getValue(*
> > TagValueExpression.java:73 *)
> >
> > at javax.faces.component.UIOutput.getValue(*UIOutput.java :173* )
> >
> > ... 99 more
> >
> >
> > So it's really true: adress1 contains the value of #{personCtrl.adresses
> > } instead of one of its elements: it should not be a Set but an Adress
> > instance. (the exception is intentional to put in evidence the problem in
> > one code snippet). Originally var ="adress1" was var= "adress" . And
> > there were no *< c:set.*
> >
> >
> > The error in that case is equivalent when I attempt to use the variable
> > adress in the included page:
> >
> > Caused by: *javax.el.PropertyNotFoundException* : /person/adress.xhtml
> > @18,52 value="#{adress.specifier }": Property 'specifier' not found on
> > type org.hibernate.collection.PersistentSet
> >
> > at com.sun.facelets.el.TagValueExpression.getValue(*
> > TagValueExpression.java:73 *)
> >
> > at javax.faces.component.UIOutput.getValue(*UIOutput.java :173* )
> >
> > ... 99 more
> >
> >
> >
> > Here's the component tree (I didn't find the input el, I suppose it's in
> > the markup variable):
> > **
> > * <UIData columns="1*" directLinkCount="9" first="0" id="adressesSheet"
> > rendered="true" rowIndex="0" rows="100" selectable="multi"
> > showDirectLinks="none" showHeader="false" showPageRange="none"
> > showRowRange="none" sortActionListener=" transient="false" var="adress"
> > binding="#{ personCtrl.adressTable}"> <UIColumn id="j_id80" markup="[
> > Ljava.lang.String;@76cfab" rendered="true" sortable="false"
> > transient="false"> <UIPanel id="j_id81" markup="[Ljava.lang.String;@3c1a28"
> > rendered="true" transient="false"> layout <UIGridLayout
> > columns="10px;1*;10px" id="j_id363" ignoreFree="false" rendered="true"
> > rows="1*" transient="false"/> <UIColumn id="j_id83" markup="[
> > Ljava.lang.String;@1d94799" rendered="true" sortable="false"
> > transient="false"/> <UINamingContainer id="personAdressList"
> > rendered="true" transient="false"/> <UIColumn id="j_id85" markup="[
> > Ljava.lang.String;@1ebcd54" rendered="true" sortable="false"
> > transient="false"/> </UIPanel> </UIColumn> <UIColumn id="j_id414"
> > markup="[Ljava.lang.String;@1f58247" rendered="true" sortable="false"
> > transient="false"> <UIPanel id="j_id415"
> > markup="[Ljava.lang.String;@13c2a46"
> > rendered="true" transient="false"> layout <UIGridLayout
> > columns="10px;1*;10px" id="j_id416" ignoreFree="false" rendered="true"
> > rows="1*" transient="false"/> <UIColumn id="j_id417" markup="[
> > Ljava.lang.String;@fb8c90" rendered="true" sortable="false"
> > transient="false"/> <UINamingContainer id="personAdressList"
> > rendered="true" transient="false"> <UIPanel id="j_id418" markup="[
> > Ljava.lang.String;@c94377" rendered="true" transient="false"> layout
> > <UIGridLayout
> > columns="1*;1*;1*" id="j_id419" ignoreFree="false" margin="3px"
> > marginBottom="3px" marginLeft="3px" marginRight="3px" marginTop="3px"
> > rendered="true" rows="1*" transient="false"/> <UICell id="j_id420"
> > rendered="true" scrollbars="false" spanX="1" spanY="1" transient="false">
> > <UILinkCommand
> > action="#{personCtrl.removeAdressCmd}" actionExpression="#{
> > personCtrl.removeAdressCmd}" defaultCommand="false" disabled="false"
> > id="j_id421" immediate="false" markup="[ Ljava.lang.String;@16c6310"
> > rendered="true" renderedPartially="[Ljava.lang.String;@dbd726"
> > transient="false" transition="true"/> </UICell> <UIPanel id="specifier"
> > markup="[Ljava.lang.String;@10a034e" rendered="true" transient="false">
> > layout <UIGridLayout columns="150px;*" id="j_id422" ignoreFree="false"
> > rendered="true" rows="1*" transient="false"/> <UILabel id="j_id423"
> > markup="[Ljava.lang.String;@5f1c5e" rendered="true" transient="false"
> > value="Complément d'adresse"/> <UIInput disabled="false" id="j_id424"
> > immediate="false" localValueSet="false" markup="[Ljava.lang.String;@3fa023"
> > password="false" readonly="false" rendered="true" required="false"
> > transient="false" valid="true"/> </UIPanel>*
> > *...*
> >
> > By the way, it's painful to see what's inside varibales with JSF, do you
> > have a best practice approch? sth like in old jsps <%System.out.print();%>.
> > I've tried the <ui:debug hotkey="x"/> in my root page but it doesn't react
> > on any shortcut and doesn't throw js exceptions, so it's a subject apart.
> > Regads,
> > Zied
> >
>
>
>
> --
> Zied Hamdi
> zatreex.sourceforge.net
--
Zied Hamdi
zatreex.sourceforge.net