So you are using a dataTable embedded in a tree?
On 9/16/05, Enrique Medina <[EMAIL PROTECTED]> wrote:
> Well, my ListOfObjectsAsListDataModel is indeed a DataModel, "binded"
> through the value attribute of the tree component. But IMHO, if I used an
> HtmlDataTable object binded to the tree component, I would get the same
> result, as the _SerializedDataModel would be also created and used in the
> restore phase, instead of my original data model object, wouldn't it?
>
>
> 2005/9/16, Martin Marinschek <[EMAIL PROTECTED]>:
> > Hmm,
> >
> > but you can't restore the value if there is no DataModel you are
> > binding to, but just a simple list, right?
> >
> > regards,
> >
> > Martin
> >
> > On 9/16/05, Enrique Medina < [EMAIL PROTECTED]> wrote:
> > > Hi Martin,
> > >
> > > What does 'ev' stands for?
> > >
> > > One of the possible solutions I suggested was, the same way a new
> > > _SerializedDataModel is generated from the current data model (my own
> > > ListOfObjectsAsListDataModel), to assign the serialized data model to
> the
> > > original data model in the restoring data phase.
> > >
> > > Please also note that I also posted a solution to the problem of lazy
> > > loading in Hibernate through the use of a LazyListDataModel object via
> > > callback mechanisms (so this will also not work with
> preserveDataModel...).
> > >
> > > 2005/9/16, Martin Marinschek < [EMAIL PROTECTED]>:
> > > > Well,
> > > >
> > > > the preserveDataModel feature was not programmed especially for this
> > > > use, I would say. I understand your interest for such a usecase,
> > > > though.
> > > >
> > > > Were I've got my problems is that with normal valueBindings for the
> > > > dataTable, the model of the backing bean will not be used until the
> > > > render response phase, instead the serialized data model will be used
> > > > - for me this means that you will need to use the serialized data
> > > > model in your backing bean as well.
> > > >
> > > > Why do you need to use your original model?
> > > >
> > > > can't you say ((UIData) ev.getParent().getParent()).getDataModel()?
> > > >
> > > > regards,
> > > >
> > > > Martin
> > > >
> > > >
> > > > On 9/15/05, Enrique Medina < [EMAIL PROTECTED]> wrote:
> > > > > Hi again,
> > > > >
> > > > > I have investigated another interesting behaviour about using
> > > > > PreserveDataModel, which makes my application crash (due to the way
> I'm
> > > > > working with data tables). Let me explain it to you in a
> > > straight-forward
> > > > > manner.
> > > > >
> > > > > Currently, I use a session scoped bean to work with my objects (
> e.g.
> > > one
> > > > > bean to work with customer objects, one bean to work with the users,
> > > etc),
> > > > > due to the fact that I don't want to loose state between requests
> (yes,
> > > I
> > > > > know it could have been done using <t:saveState>...). So within all
> my
> > > > > session beans, I have defined a ListDataModel variable that holds
> the
> > > data
> > > > > model that is presented to the view every time the view is rendered
> > > (nothing
> > > > > strange here, I guess).
> > > > >
> > > > > From my views (JSP), I simply use:
> > > > >
> > > > > <t:dataTable ......
> > > > >
> > > value="#{
> sessionScopedWhateverBean.listOfObjectsAsListDataModel}"
> > > > > ....>
> > > > >
> > > > > So whenever the view is rendered, the method "public DataModel
> > > > > getListOfObjectsAsListDataModel()" in my session
> scoped
> > > > > bean is invoked. Obviously, the first time it will be created, and
> the
> > > > > subsequent calls simply will return the existing object.
> Everything's
> > > fine
> > > > > here.
> > > > >
> > > > > The problem comes when using PreserveDataModel because, as
> explained in
> > > the
> > > > > wiki I posted about working with PreserveDataModel, every object in
> my
> > > > > listOfObjectsAsListDataModel is added to a new ArrayList belonging
> to a
> > > new
> > > > > _SerializedDataModel object, which is the object being really
> serialized
> > > > > when saving the state by the JspStateManagerImpl. And why is it the
> > > problem?
> > > > > Think about the future restoring phase...
> > > > >
> > > > > When a link is clicked inside the data table to work with a
> particular
> > > > > object, the event created as a consequence of the "clicked link" has
> the
> > > > > information about the exact row which has been clicked (specifically
> in
> > > its
> > > > > rowIndex attribute). Following, the state is restored, and the
> > > previously
> > > > > serialized data model (as a _SerializedDataModel object) is used to
> set
> > > the
> > > > > information about the "clicked row". What does this mean? It's as
> simple
> > > as
> > > > > this: the "clicked row" information is set on the restored object,
> so it
> > > is
> > > > > really set on the _SerializedDataModel object (nothing to be with
> our
> > > > > original ListOfObjectsAsListDataModel object).
> > > > >
> > > > > When afterwards the broadcast calls our action method (the one
> > > associated
> > > > > with the link in the data table through usually an HtmlCommandLink
> tag),
> > > our
> > > > > session scoped bean has the original ListOfObjectsAsListDataModel
> object
> > > > > that was used to create the _SerializedDataModel object when saving
> the
> > > > > state. But with a definitive difference: the rowIndex from the event
> was
> > > set
> > > > > on the _SerializedDataModel object, not the one we have here now,
> i.e.
> > > our
> > > > > ListOfObjectsAsListDataModel object. And due to the fact that our
> > > > > ListOfObjectsAsListDataModel was used to create the
> _SerializedDataModel
> > > > > object, now it has its internal rowIndex attribute set to the last
> row
> > > plus
> > > > > one (obviously, as the saveState method iterates through the
> > > > > ListOfObjectsAsListDataModel list of objects to populate the
> > > > > _SerializedDataModel list of objects).
> > > > >
> > > > > At the end, the result is a call to setRowIndex(last row + 1),
> which
> > > > > obviously does not exist, so a "IllegalArgumentException: row is
> > > > > unavailable" is thrown. On the other hand, if I don't use
> > > preserveDataModel,
> > > > > everything works perfectly, as the ListOfObjectsAsListDataModel
> object
> > > is
> > > > > the one used to save the state (not the _SerializedDataModel).
> > > > >
> > > > > IMHO, the solution will be as simple as updating my
> > > > > ListOfObjectsAsListDataModel object with the _SerializedDataModel
> object
> > > > > when restoring the state. But I would like to hear the MyFaces' team
> > > experts
> > > > > about this possibility before going deeper into the code.
> > > > >
> > > > > Is it feasible? Is it possible to work with the preserveDataModel
> > > together
> > > > > with a DataModel inside my bean and the getRowData() method? Is the
> use
> > > od
> > > > > preserveDataModel incompatible with using the getRowData() method
> inside
> > > my
> > > > > bean?
> > > > >
> > > > > Looking forward to hearing your comments :-)
> > > > >
> > > >
> > > >
> > > > --
> > > >
> > > > http://www.irian.at
> > > > Your JSF powerhouse -
> > > > JSF Trainings in English and German
> > > >
> > >
> > >
> >
> >
> > --
> >
> > http://www.irian.at
> > Your JSF powerhouse -
> > JSF Trainings in English and German
> >
>
>
--
http://www.irian.at
Your JSF powerhouse -
JSF Trainings in English and German