Al Sutton-4 wrote: > > Hi Richard, > > Thanks for the pointer. > > I'm using 2 actions because my current belief is that using a single > action > would cause problems with result names because you can't define separate > SUCCESS results for the form prep and the form submission if you only have > one action (or have I misunderstood the docs?). > >
You can have a single action with multiple execution methods that return the same result name to different result values. i.e. public class MyAction extends ActionSupport { public String prep() { ... return SUCCESS; public String submit() { ... return SUCCESS; } } could be defined as <package name="my-package" namespace="/form"> <action name="prep" class="my.package.MyAction" method="prep"> <result name="success">/my/dir/myjsp1.jsp</result> </action> <action name="submit" class="my.package.MyAction" method="prep"> <result name="success">/my/dir/myjsp1.jsp</result> </action> </package> Al Sutton-4 wrote: > > > Isn't using the Prepareable interface on the submission action > inefficient?, > I can see it's an option for the list population action, but wouldn't the > database be queried unnecessarily when the form is submitted with no > errors > because the action class gets the list from the database in the prepare > method? > > Al. > > I think what Richard is suggesting is something akin to this : public class AwesomeAction extends ActionSupport implements Preparable { List awesomeList; AwesomeService awesomeService; public void prepare() { awesomeList = awesomeService.getList(); } public string prep() { return SUCCESS; } public String submit() { [ do checks ] if ( !everythignChecksOut ) return INPUT; return SUCCESS; } } In such a scenario, yes, prepare would be called on the submission. You can work around it in this manner. public class AwesomeAction extends ActionSupport implements Preparable { List awesomeList; AwesomeService awesomeService; public void preparePrep /* how droll! */ () { awesomeList = awesomeService.getList(); } public string prep() { return SUCCESS; } public String submit() { [ do checks ] if ( !everythignChecksOut ) { preparePrep(); return INPUT; } return SUCCESS; } } HTH, -a Al Sutton-4 wrote: > > > > -----Original Message----- > From: Richard Sayre [mailto:[EMAIL PROTECTED] > Sent: 06 September 2007 13:33 > To: Struts Users Mailing List > Subject: Re: [s2.0.9] Is there a better way to do this... > > > I use the prepare method to populate my lists. See the Prepareable > interface. I also would put this in Action B. Is there a specific > reason why you are using 2 actions? > > On 9/6/07, Al Sutton <[EMAIL PROTECTED]> wrote: >> Here's a problem I've come across a couple of times and the solution I >> have feels clunky so I thought I'd throw it out to see if anyone has >> any better ideas; >> >> I have a form which has a s:select populated from a Map of objects >> which come from a database, at the moment I'm doing the following; >> >> 1) Action A gets the list from the database >> 2) A .JSP displays the form with the s:select and submits to Action B >> 3) Action B processes the form. >> >> This is looks neat until you look at the situation when an error >> occurs. >> >> In order to ensure that the s:select is correctly filled the error >> result has to send the browser back to Action A, which is being done >> as a redirect. The problem with this is that all actionMessages and >> actionErrors get lost during the redirect, and thus the user can't see >> what was wrong. To get around this I use the store interceptor, but >> this causes problems if validation is turned on (it will bounce the >> user to the error result of Action A if an errorMessage is present - >> see https://issues.apache.org/struts/browse/WW-1963 for the bug >> report). >> >> So I end up with the validation interceptor turned off and having to >> hand code some validation, and the store interceptor turned on for >> several actions. >> >> So has anyone found a better way of handling the "populate list -> >> show list >> -> handle errors" situation? >> > > --------------------------------------------------------------------- > 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] > > > -- View this message in context: http://www.nabble.com/-s2.0.9--Is-there-a-better-way-to-do-this...-tf4391572.html#a12525108 Sent from the Struts - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]