com.opensymphony.xwork2.interceptor
public class: DefaultWorkflowInterceptor [javadoc |
source]
java.lang.Object
com.opensymphony.xwork2.interceptor.AbstractInterceptor
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor
All Implemented Interfaces:
Interceptor
An interceptor that makes sure there are not validation errors before allowing the interceptor chain to continue.
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.
See
MethodFilterInterceptor for more info.
Interceptor 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.
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>
Methods from java.lang.Object: |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method from com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor Detail: |
protected String doIntercept(ActionInvocation invocation) throws Exception {
Object action = invocation.getAction();
if (action instanceof ValidationAware) {
ValidationAware validationAwareAction = (ValidationAware) action;
if (validationAwareAction.hasErrors()) {
if (LOG.isDebugEnabled()) {
LOG.debug("Errors on action " + validationAwareAction + ", returning result name 'input'");
}
String resultName = inputResultName;
if (action instanceof ValidationWorkflowAware) {
resultName = ((ValidationWorkflowAware) action).getInputResultName();
}
InputConfig annotation = action.getClass().getMethod(invocation.getProxy().getMethod(), new Class[0]).getAnnotation(InputConfig.class);
if (annotation != null) {
if (!annotation.methodName().equals("")) {
Method method = action.getClass().getMethod(annotation.methodName());
resultName = (String) method.invoke(action);
} else {
resultName = annotation.resultName();
}
}
return resultName;
}
}
return invocation.invoke();
}
Intercept ActionInvocation and returns a inputResultName
when action / field errors is found registered. |
public void setInputResultName(String inputResultName) {
this.inputResultName = inputResultName;
}
Set the inputResultName (result name to be returned when
a action / field error is found registered). Default to Action#INPUT |