Validation Interceptor
This interceptor runs the action through the standard validation framework, which in turn checks the action against any
validation rules (found in files such as ActionClass-validation.xml
) and adds field-level and action-level error
messages (provided that the action implements ValidationAware
). This interceptor is often one of the last (or second
to last) interceptors applied in a stack, as it assumes that all values have already been set on the action.
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 workflow of the action request does not change due to this interceptor. Rather, this interceptor is often used
in conjunction with the workflow
interceptor.
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.
Parameters
alwaysInvokeValidate
- Defaults to true. If true validate() method will always be invoked, otherwise it will not.programmatic
- Defaults to true. If true and the action isValidateable
callvalidate()
, and any method that starts withvalidate
.declarative
- Defaults to true. Perform validation based on xml or annotations.
Extending the Interceptor
There are no known extension points for this interceptor.
Examples
<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 the following case myMethod of the action class will not
get validated -->
<action name="someAction" class="com.examples.SomeAction">
<interceptor-ref name="params"/>
<interceptor-ref name="validation">
<param name="excludeMethods">myMethod</param>
</interceptor-ref>
<interceptor-ref name="workflow"/>
<result name="success">good_result.ftl</result>
</action>
<-- in the following case only annotated methods of the action class will
be validated -->
<action name="someAction" class="com.examples.SomeAction">
<interceptor-ref name="params"/>
<interceptor-ref name="validation">
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="workflow"/>
<result name="success">good_result.ftl</result>
</action>