myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Uri Kalish" <ukal...@mercury.com>
Subject RE: ManagedBean Get and Set Values on Constructor
Date Wed, 26 Apr 2006 09:39:52 GMT
Thanks for the solution, but...
If I understand correctly these are all solutions just to make the
passing of the selected employee id parameter from the table on the
employees list page to the employees list bean more elegant without
using java script and hidden field.

Still...
Case 1. The employee details bean (second bean) will have to get the id
from the  employees list bean (first bean).
Case 2. Sometimes we submit the details bean and will arrive to the same
page again (some error).
So the details bean will have to set its values (load the details from
the database) by the id. Sometimes it will come from another bean (case
1) and sometimes from the same bean (case 2).

If it will try to set the values on its constructor, this can be done
for case 1 by the facesContext/createValueBinding trick, but for case 2
- we are in trouble because at constructor it's too early (its setters
hasn't been called yet).

Does this mean that we are forced to set the id on the constructor on
case 1 and load details ON EACH OF THE DETAILS BEAN GETTERS (i.e. Check
if we already loaded the employee object from the database, if not -
load, set the property value by the object value, return the value)???






-----Original Message-----
From: mwessendorf@gmail.com [mailto:mwessendorf@gmail.com] On Behalf Of
Matthias Wessendorf
Sent: Tuesday, April 25, 2006 7:29 PM
To: MyFaces Discussion
Subject: Re: ManagedBean Get and Set Values on Constructor

You also should take a look on UISaveState [2]

[2] http://wiki.apache.org/myfaces/SaveState

On 4/25/06, Matthias Wessendorf <matzew@apache.org> wrote:
> Hi Uri,
>
> you can do all the *ugly* parameter handling, but you should go ahead
and use
>  <t:updateActionListener/>.
>
>
> For instance you have a grid like
> <h:dataTable var="analysemappe"
> value="#{analysisFolderMaster.analysisfolders}"...>
>
> </h:dataTable>
>
> You could do something like
>
> <h:commandButton
>   value="Details"
>   styleClass="stdButton"
>   action="details">
>
> <t:updateActionListener
>    property="#{analysisFolderDetail.analysisFolder}"
>   value="#{analysemappe}" />
> </h:commandButton>
>
>
>
> This commandButton will navigate you to a *detail* page and passes the
> current grid object (#{analysemappe}) to "analysisFolder"-property of
> the backing bean "analysisFolderDetail".
>
>
> On the detail page you can do stuff like
>
> <h:outputText value="#{analysisFolderDetail.analysisFolder.name}"/>
>
> See also [1] for more. Also you could uses Shale's ViewController.
>
> -Matthias
>
> [1]
http://wiki.apache.org/myfaces/ExecutingMethodsFromLinkButtonParameters
>
>
> On 4/25/06, Uri Kalish <ukalish@mercury.com> wrote:
> >
> >
> >
> > We have a page displaying a list of objects.
> >
> > When a user clicks on an object we want to display and edit the
object
> > details on another page.
> >
> >
> >
> > So...
> >
> > A user clicks on an object on page1.
> >
> > We save the object id (by java script) to a hidden field on page1
(bound to
> > a field on ManagedBean1) and submit page1.
> >
> > On ManagedBean1 code we navigate to page2.
> >
> > ManagedBean2 gets the id from the field on ManagedBean1 (by
facesContext and
> > createValueBinding) and saves it to a field (bound to a hidden field
on
> > page2).
> >
> > It happen ON THE CONSTRUCTOR of ManagedBean2 because it needs the
object id
> > in order to initialize its fields from the database.
> >
> >
> >
> > Now...
> >
> > If we now want to refresh page2 (e.g. due to some error)... we can't
get the
> > id on time (because getting the id is done on the ManagedBean2
constructor
> > before it restores its values from the page).
> >
> >
> >
> > Any ideas regarding best practice for this issue?
> >
> >
> >
> >
> >
> >
> >
______________________________________________________________________
> >  This email has been scanned by the MessageLabs Email Security
System.
> >  For more information please visit
> > http://www.messagelabs.com/email
> >
______________________________________________________________________
> >
>
>
> --
> Matthias Wessendorf
> Aechterhoek 18
> 48282 Emsdetten
> http://jroller.com/page/mwessendorf
> mwessendorf-at-gmail-dot-com
>


--
Matthias Wessendorf
Aechterhoek 18
48282 Emsdetten
http://jroller.com/page/mwessendorf
mwessendorf-at-gmail-dot-com

______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________

Mime
View raw message