If the list doesnt change during the course of a users session then the best
thing to do is to create it on first demand and store it in the session.
This saves you from looking it up from the db repeatedly when unnecessary
and is thus more efficient. If the list is the same for all users and doesnt
change at all then you could store it in the servlet (application) context.

If it does change (for example when new records are added) then you will
still need to look it up each time. In this case your best bet might be to
extend Rick's suggestion about having a seperate helper class that assembles
the list (always a good idea). This helper/manager/thing is part of your
business process layer. Above that you could have an aditional (very simple)
adaptor class that is passed a request, calls this helper to obtain the
list, and stores said list under the appropriate request attribute.

Your validate method could thus call this adapter to setup the list when it
is validating the entered data. Your setup action, likewise would call the
adaptor class rather than directly calling the business layer and storing
the result.

One thing to beware of when you do such non-trivial things in the
actionform, is that if memory serves me correctly (someone please correct me
if Im wrong on this!), exceptions thrown here wont be handled by the
exception handler you configured in struts config as the try/catch that
invokes that handler is merely around the invocation of the actual action
execute and not the form reset / validate stuff.

These are some of the reasons I personally prefer to do my validation in the
action itself and dont make use of the forms validate method. (Of course if
your using struts validator that becomes problematic too)

hth
Andrew


-----Original Message-----
From: Rick Reumann [mailto:[EMAIL PROTECTED]
Sent: Wednesday, 4 February 2004 12:26
To: Struts Users Mailing List
Subject: Re: Need to pass data to JSP in ActionForm


Pat Young wrote:

> 6.  The problem I am having is that if the ActionForm
> failes validation, then the sales.jsp page gets an
> error becaue it can not find the bean in the Request
> for the products list.  Should I build this bean in my
> validate and place it in the request at the beginning
> of validate?  If validate fails, there is no other
> opportunity to build the products list and get it into
> the Request.

Personally I often opt for the easy solution and put the List in Session
scope, but there are other alternatives that have been discussed on this
list before.

> 7.  I typically uses Actions to retrieves and build
> beans and then add them to the request for the jsp to
> access.  Is this an acceptable practice also?

Depends what you mean by "build beans." Nothing wrong wtih setting stuff
into Request scope from your Actions, but make sure you are calling some
business process that does the actual "building." For example...

//in your Action:
List someList = someBusinessClass.getMyList();
request.setAttribute("listWhatever", someList);

--
Rick

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



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

Reply via email to