Howard, there are a couple different ways to achieve the results you desire.
I'll explain one that is the "path of least resistance".

Screen 1: Displaying the list

You already say you have a bean in session scope which contains your list.
So, to display the list all you should really have to do is either forward
(via an action ) to the .jsp page that displays your list or call the .jsp
directly. On the page that displays your list, you can use the logic:iterate
tag to render your list to the screen. (I'm assuming you've already
successfully rendered the bean, if not let me know).
You say that each item has an "edit button" next to it. For now, I'll assume
that this edit button is
a hyperlinked image button that when clicked will send a request to a
"showEditItemAction" with some information in the query string which
uniquely identifies the item which you wish to edit.


Screen 2: Displaying the item to be edited

As mentioned above the user has selected an item from the list by clicking
the appropriate edit button. The button is a hyperlinked button which sends
a request to an action that will prepare the edit page for display; let's
call the action "showEditItemAction". ShowEditItemAction  retrieves the
query string parameter which uniquely identifies the item in the bean.
ShowEditItemAction gets the identified item from the bean and populates the
ActionForm and then forwards to screen 2 which will render the contents of
the form.


Now, the best way to do this is subjective and relative to your requirements
and existing architecture.
This sounds like a classic master-detail problem in which you display a
master list of items to select from and when the user selects an item, it's
details are displayed on another screen (either for edit or display). You
can search the archives for master-detail and probably find a lot of
solutions that are similar.

Eddie has already alluded to a popular approach where you have an action
which prepares the master list screen for display; an action which prepares
the detail screen for display; and finally an action which saves any changes
and forwards back to the list.


Let me know if you need more clarification.

robert


> -----Original Message-----
> From: Howard Miller [mailto:[EMAIL PROTECTED]]
> Sent: Saturday, September 21, 2002 2:27 PM
> To: Struts Users Mailing List
> Subject: Re: Scope of form beans
>
>
> Errr..
>
> may I take a step back, and explain what I want to do, rather that
> how I'm doing it wrong!
>
> - I have a bean in the session scope (working fine).
> - This session bean has an ArrayList 'pointing to' a number of other
> beans.
> - Screen 1: The array list is displayed for the user, with an edit button
> next to each item. (ie, list of items, and the user can edit the content
> of each one).
> - Screen 2: The user has selected one of the ArrayList items and can
> now edit the contents.
> - After editing we go back to screen 1, to pick another if need be.
>
> What's the best way to do this, basically? Its kind of like a shopping
> cart scenario (it isn't - but just to get over the idea), so it
> should be a
> common situation
>
> Cheers.... Howard
>
> On 21 Sep 2002 at 10:32, Eddie Bush wrote:
>
> > So you're trying to pre-populate a form?  ... which you're just
> about to
> > show a user?
> >
> > link -> action f-> JSP  (f-> == forward)
> >
> > - link points to action
> > - action populates form
> > - action forwards control to JSP
> >
> > Is this your scenario?
> >
> > You need to:
> >     - build a form-bean (by extending ActionForm) or use a
> > DynaActionForm (or similar)
> >     - associate the form-bean with the action (so Struts will create it)
> >     - extend Action (or one of it's descendants) and code the "execute"
> > method so that it pre-populates your bean and then forwards to
> the JSP page.
> >
> > Once you have done this, your action is passed an instance of the
> > form-bean which should be available to the JSP page.  You just populate
> > it and forward control.  Be aware though :-) that if you  then send the
> > user to a "view" page (to show what their edits were, perhaps), you'll
> > have to be looking in the same scope for the form-bean, or you're not
> > gonna find it ;-)
> >
> > Ex:
> >
> > <action path="/editUser" ... scope="request" ... />
> > <action path="/viewUser" ... scope="request" ... />
> >
> > The default scope is session.  If that's where you want the form kept
> > you don't have to specify it.
> >
> > Howard Miller wrote:
> >
> > >Hi,
> > >
> > >I'm a bit confused... so I hope this makes some sense.
> > >
> > >I wish to display a form for the user to edit. BUT the form
> isn't empty
> > >it needs to come from a bean that is sitting in an ArrayList. Is there
> > >some way to do this directly?
> > >
> > >My answer (that doesn't work) is to create a "standalone" bean (of
> > >the same type) in the action form that forwards to the page.
> I've tried
> > >this a number of different ways but my form does not see the bean
> > >"bean not found etc". I am creating the bean in request scope - is
> > >this correct?
> > >
> > >Without ranting on any more, what are the "rules" for doing this,
> > >assuming its a good idea at all.
> > >
> > >Howard
> > >
> > >--
> > >To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> >For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
> >
>
> --
> Eddie Bush
>
>
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>
>



--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to