|
An interceptor that does some basic validation workflow before allowing the interceptor chain to continue.
This interceptor does nothing if the name of the method being invoked is specified in the excludeMethods
parameter. excludeMethods accepts a comma-delimited list of method names. For example, requests to
foo!input.action and foo!back.action will be skipped by this interceptor if you set the
excludeMethods parameter to "input, back".
The order of execution in the workflow is:
- If the action being executed implements
Validateable , the action's
Validateable.validatevalidate method is called.
- Next, if the action implements
ValidationAware , the action's
ValidationAware.hasErrorshasErrors method is called. If this method returns true, this interceptor stops the chain from continuing and
immediately returns
Action.INPUT
Note: if the action doesn't implement either interface, this interceptor effectively does nothing. This
interceptor is often used with the validation interceptor. However, it does not have to be, especially if you
wish to write all your validation rules by hand in the validate() method rather than in XML files.
NOTE: As this method extends off MethodFilterInterceptor, it is capable of
deciding if it is applicable only to selective methods in the action class. See
MethodFilterInterceptor for more info.
Update: Added logic to execute a validate{MethodName} rather than a general validate method.
This allows us to run some validation logic based on the method name we specify in the
ActionProxy. For example, you can specify a validateInput() method, or even a validateDoInput()
method that will be run before the invocation of the input method.
Interceptor parameters:
- alwaysInvokeValidate - Default to true. If true validate() method will always
be invoked, otherwise it will not.
Extending the interceptor:
There are no known extension points for this interceptor.
Example code:
<action name="someAction" class="com.examples.SomeAction">
<interceptor-ref name="params"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow"/>
<result name="success">good_result.ftl</result>
</action>
<-- In this case myMethod of the action class will not pass through
the workflow process -->
<action name="someAction" class="com.examples.SomeAction">
<interceptor-ref name="params"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow">
<param name="excludeMethods">myMethod</param>
</interceptor-ref name="workflow">
<result name="success">good_result.ftl</result>
</action>
author: Jason Carreira author: Rainer Hermanns author: Alexandru Popescu author: Philip Luppens author: tm_jee version: $Date: 2006-09-14 18:41:07 +0200 (Do, 14 Sep 2006) $ $Id: DefaultWorkflowInterceptor.java 1135 2006-09-14 16:41:07Z tm_jee $ |