Personally I'd either map an action to the input method or differentiate based 
on GET/POST requests, but that's just personal preference.

Dave

--- On Fri, 7/11/08, Andreas Mähler <[EMAIL PROTECTED]> wrote:

> From: Andreas Mähler <[EMAIL PROTECTED]>
> Subject: Re: [S2] Recipe for Action and View
> To: user@struts.apache.org
> Date: Friday, July 11, 2008, 10:10 PM
> Hello Gabriel,
> 
> yes, I indeed took that into consideration, but if i am not
> wrong, there 
> are two drawbacks:
> 
> 1: When I create my own base class, and would like to use
> the 
> prepare-method for something else, too, I need to overwrite
> the old 
> method and mustn't forget to call super.prepare() in my
> implementation. 
> IMO, this is a likely source of bugs.
> 
> 2: I would have had to mess with the defaultStack anyway,
> since prepare 
> is located before some other important interceptors (e.g.
> i18n) so I 
> would have lost this functionality by taking an "early
> shortcut".
> 
> The Interceptor was done in 10mins and as far as i could
> test it, it 
> seems to work fine.
> 
> public class SubmitInterceptor implements Interceptor
> {
>       public static final String INPUT = "input";
> 
>       public void destroy() {}
>       public void init() {}
> 
> 
>       private String paramNames;
>       
>       public void setParamNames( String paramNames )
>       {
>               this.paramNames = paramNames;
>       }       
>       
> 
>       public String intercept( ActionInvocation ai ) throws
> Exception
>       {
>               Map params = ai.getInvocationContext().getParameters();
> 
>               String[] paramNames = this.paramNames.split(
> "," );
>               
>               for( String param : paramNames )
>               {
>                       if( params.get( param.trim() ) != null )
>                               return ai.invoke();
>               }
>               
>               return INPUT;
>       }
> }
> 
> I created a new interceptor stack for my webapp that is
> like 
> defaultStack, but with the SubmitInterceptor inserted right
> before 
> conversionError:
> 
> <interceptor-ref name="submit">
>       <param
> name="paramNames">submit</param>
> </interceptor-ref>
> 
> As for the view, i am currently setting the
> "submit" parameter (as 
> configured to be looked for above) for the Button:
> 
> <s:submit name="submit" label="OK"
> value="true" type="button" />
> 
> Comments and suggestions are welcome :-)
> 
> ~Andreas
> 
> 
> 
> Gabriel Belingueres schrieb:
> > You can also opt for sharing the prepare() code
> through inheritance,
> > meaning that you create a superclass action holding
> the prepare()
> > code, instead of coding a custom interceptor.
> > 
> > 2008/7/11 Andreas Mähler
> <[EMAIL PROTECTED]>:
> >> Thanks for your Answer, Lukasz.
> >>
> >> I already know the PrepareInterceptor and it can
> be used for what I would
> >> like to do. But I consider a special interceptor
> more convinient, since I
> >> intend to use it for more than one pair of view
> and action. (Using
> >> PrepareInterceptor would imply the need to add the
> code to every single
> >> action.)
> 
> 
> ---------------------------------------------------------------------
> 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