If you want to use saveState this way, you can. I don't remember how
the examples provide an alternative, but I have used savestate like
this.
// Could acquire a reference to your data backing bean some
other way if you want
ValueBinding binding =
FacesContext.getCurrentInstance().getApplication().createValueBinding("#{YourBean}");
YourBeanClass YourBean =
(YourBeanClass)binding.getValue(FacesContext.getCurrentInstance());
// get the row and assign it to your request-scoped data backing bean.
YourRowDataClass selectedRow =
(YourRowDataClass)YourUIDataComponent.getRowData();
YourBean.setYourRowValue(selectedRow);
The Master/Detail example and source is available at this url if you
want to investigate the methodology Simon suggested.
http://www.irian.at/myfaces/masterDetail.jsf
On 12/5/05, Yannick Le Teigner <[EMAIL PROTECTED]> wrote:
> Simon,
>
> The problem I face with the saveState component, is that when I place it
> on the master (1st) page, it is, as expected, initialized with no value
> (because the user has yet to click on a row in the datatable to edit a
> user/item.)
> Once the user click on a row, the detail page is displayed. But the
> BackingBean is reloaded from the saveState component, and is set as
> empty (as it was on the master page) -- and not initialized with the
> data from the row the user has clicked on.
> What I would need is somehow to modify the saveState component before
> the detail page is displayed so that I can modify the backingbean inside
> and put one correctly initialized (corresponding to the row the user has
> clicked on).
>
> This seems like a basic app, but I cannot get around it without using
> session scoped bean. I would be very welcome if anyone could show me
> some code with request scoped beans achieving the same results.
>
> Thanks!
>
> > <t:saveState> is the correct tag to use when you want to avoid
> session-scoped managed
> > beans.
> >
> > I don't know why you have that command-link code; nothing like this
> is necessary to use
> > t:saveState. If you wish to preserve the state of an entire managed
> bean, then do:
> >
> >Master page:
> > <t:saveState value="#{myBackingBean}"/>
> >
> > Detail page:
> > <t:saveState value="#{myBackingBean}"/>
> >
> > On first visit to the master page, there is no saved state to
> restore, so a default instance
> > of that bean is created. When the page is serialized after rendering,
> the bean's state is
> > stored.
> >
> > When either the master or detail page is visited thereafter, the
> saved object is recreated
> > from the saved state, and #{myBackingBean} is set to be a reference
> to the restored
> > object.
> >
> > You can also save just specific fields of a bean via:
> > <t:saveState value="#{myBackingBean.someProperty}"/>
> >
> >Regards,
> >
> >Simon
>
>