blob: e9d4d4b85a9a568facde89e448c57cc21d063e1b [file] [view]
---
layout: default
title: Default Workflow Interceptor
parent:
title: Interceptors
url: interceptors.html
---
# 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` overrides `excludedMethods`. 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 class
- `ValidationWorkflowAware` - allows changing result name programmatically
- `ValidationErrorAware` - 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`
1. if the action class have `validate{MethodName}()`, it will be invoked
2. else if the action class have `validateDo{MethodName}()`, it will be invoked
3. no matter if 1] or 2] is performed, if `alwaysInvokeValidate` property of the interceptor is `true` (which is by
default `true`), `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
```xml
<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>
```