com.opensymphony.xwork2.interceptor
Class DefaultWorkflowInterceptor
java.lang.Object
com.opensymphony.xwork2.interceptor.AbstractInterceptor
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor
- All Implemented Interfaces:
- Interceptor, Serializable
public class DefaultWorkflowInterceptor
- extends MethodFilterInterceptor
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 validate
method is called.
- Next, if the action implements
ValidationAware
, the action's hasErrors
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. 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.
See MethodFilterInterceptor
for more info.
Update: Added logic to execute a validate{MethodName} and then conditionally
followed than a general validate method, depending on the 'alwaysInvokeValidate'
parameter/property which is by default set to true.
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
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.
- 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.
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 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>
- Version:
- $Date: 2007-03-30 03:56:25 -0500 (Fri, 30 Mar 2007) $ $Id: DefaultWorkflowInterceptor.java 1397 2007-03-30 08:56:25Z rgielen $
- Author:
- Jason Carreira, Rainer Hermanns, Alexandru Popescu, Philip Luppens, tm_jee
- See Also:
- Serialized Form
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
_log
private static final Log _log
VALIDATE_PREFIX
private static final String VALIDATE_PREFIX
- See Also:
- Constant Field Values
ALT_VALIDATE_PREFIX
private static final String ALT_VALIDATE_PREFIX
- See Also:
- Constant Field Values
alwaysInvokeValidate
private boolean alwaysInvokeValidate
inputResultName
private String inputResultName
DefaultWorkflowInterceptor
public DefaultWorkflowInterceptor()
setAlwaysInvokeValidate
public void setAlwaysInvokeValidate(String alwaysInvokeValidate)
- Determine if
Validateable
's validate()
should always
be invoked. Default to "true".
- Parameters:
alwaysInvokeValidate
-
setInputResultName
public void setInputResultName(String inputResultName)
- Set the
inputResultName
(result name to be returned when
a action / field error is found registered). Default to Action.INPUT
- Parameters:
inputResultName
-
doIntercept
protected String doIntercept(ActionInvocation invocation)
throws Exception
- Intercept
ActionInvocation
and returns a inputResultName
when action / field errors is found registered.
- Specified by:
doIntercept
in class MethodFilterInterceptor
- Parameters:
invocation
- the action invocation
- Returns:
- String result name
- Throws:
Exception
Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.