Many thanks for your explanation Simon,

the UIData logic really impresses me...



Regards,

Matthias

> -----Ursprüngliche Nachricht-----
> Von: [EMAIL PROTECTED]
> [mailto:[EMAIL PROTECTED] Auftrag
> von Simon Kitching
> Gesendet: Donnerstag, 5. Januar 2006 22:30
> An: MyFaces Discussion
> Betreff: Re: AW: AW: Problem text with inputText rendering behaviour in
> a dataTable
>
>
> Matthias Kahlau wrote:
> > Hi Volker!
> >
> > many thanks for your help. The problem with the equal component
> ids in the
> > logging output was caused by using dataModel.setRowIndex() instead of
> > uiData.setRowIndex() to access a row object.
> >
> > But why can't dataModel.setRowIndex() be used?
> >
> > I have used dataModel.getRowData() successfully already, so why not
> > dataModel.setRowIndex()?
>
> Because there is only one component, not one for each row. The UIData
> component keeps partial "state" information for each row of the table.
> When row X is selected, it shoves the state for that row into the
> component (in particular, the submittedValue). It also updates the
> component's id so that the component has a row-specific id, of form
> "tablename:rownum:componentid". All this logic gets bypassed if you use
> dataModel.setRowIndex instead of uidata.setRowIndex.
>
> >
> >
> >> There is just one UIComponent, not one for each row! Thats the reason
> >> why i don't think it could be usefull to have a component
> binding inside
> >> of a dataTable. If you realy need to access the components i think its
> >> easier to have the binding on the UIData, as you need to do
> >> uidata.setRowIndex() to populate the values.
> >
> > I need the component-binding to the inputText in the dataTable
> to add custom
> > error messages to the inputText in a custom validator. I can access the
> > clientId of the inputText needed for a component-specific error
> message by
> > using the component-binding. Do you see an alternative to the
> > component-binding? (What comes to my mind is traversing the
> component tree
> > instead.)
>
> As noted above, the same component is used in each row, with its id
> updated whenever the uidata.setRowIndex is called. I think binding
> should be ok, but you need to be sure the component's id is set to
> reflect the "row" it currently represents before registering the message.
>
> Regards,
>
> Simon
>
>

Reply via email to