Hi Zied,

tc:sheet is a extension of h:datatable and supports the same values.

AFAIK Set is not supported as Collection because there is no defined
order to work on.
But Set is supported as Object:
http://java.sun.com/javaee/javaserverfaces/1.2_MR1/docs/api/javax/faces/model/ScalarDataModel.html


Regards,
    Volker

2007/9/11, Zied Hamdi <[EMAIL PROTECTED]>:
> 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

Reply via email to