Default Workflow Interceptor
An interceptor that makes sure there are not validation, conversion or action errors before allowing the interceptor chain to continue. If a single FieldError or ActionError (including the ones replicated by the Message Store Interceptor in a redirection) is found, the INPUT result will be triggered.
This interceptor does not perform any validation.
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
.
Note: As this method extends off MethodFilterInterceptor, it is capable of deciding if it is applicable only to selective methods in the action class. This is done by adding param tags for the interceptor element, naming either a list of excluded method names and/or a list of included method names, whereby
includeMethods
overridesexcludedMethods
. A single * sign is interpreted as wildcard matching all methods for both parameters.MethodFilterInterceptor
for more info.
This interceptor also supports the following interfaces which can implemented by actions:
ValidationAware
- implemented by ActionSupport classValidationWorkflowAware
- allows changing result name programmaticallyValidationErrorAware
- notifies action about errors and also allow change result name
You can also use InputConfig
annotation to change result name returned when validation errors occurred.
In DefaultWorkflowInterceptor
applies only when action implements com.opensymphony.xwork2.Validateable
- if the action class have
validate{MethodName}()
, it will be invoked - else if the action class have
validateDo{MethodName}()
, it will be invoked - no matter if 1] or 2] is performed, if
alwaysInvokeValidate
property of the interceptor istrue
(which is by defaulttrue
),validate()
will be invoked.
Parameters
inputResultName
- Default to “input”. Determine the result name to be returned when an action / field error is found.
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 this case myMethod as well as mySecondMethod 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,mySecondMethod</param>
</interceptor-ref name="workflow">
<result name="success">good_result.ftl</result>
</action>
<-- In this case, the result named "error" will be used when
an action / field error is found -->
<-- The Interceptor will only be applied for myWorkflowMethod method of action
classes, since this is the only included method while any others are excluded -->
<action name="someAction" class="com.examples.SomeAction">
<interceptor-ref name="params"/>
<interceptor-ref name="validation"/>
<interceptor-ref name="workflow">
<param name="inputResultName">error</param>
<param name="excludeMethods">*</param>
<param name="includeMethods">myWorkflowMethod</param>
</interceptor-ref>
<result name="success">good_result.ftl</result>
</action>