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]

Reply via email to