All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opensymphony.xwork2.validator.ValidationInterceptor Maven / Gradle / Ivy

Go to download

XWork is an command-pattern framework that is used to power WebWork as well as other applications. XWork provides an Inversion of Control container, a powerful expression language, data type conversion, validation, and pluggable configuration.

There is a newer version: 2.1.3
Show newest version
/*
 * Copyright (c) 2002-2006 by OpenSymphony
 * All rights reserved.
 */
package com.opensymphony.xwork2.validator;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

/**
 * 
 *
 * 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 {@link com.opensymphony.xwork2.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". * *

Note that this has nothing to do with the {@link com.opensymphony.xwork2.Validateable} interface and simply adds * error messages to the action. The workflow of the action request does not change due to this interceptor. Rather, * this interceptor is often used in conjuction 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. * * * *

Interceptor parameters: * * * *

    * *
  • None
  • * *
* * * *

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 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>
 *
 *
 * 
 * 
* * @author Jason Carreira * @author Rainer Hermanns * @author Alexandru Popescu * @see ActionValidatorManager * @see com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor * * @version $Date: 2007-04-04 17:06:44 +0200 (Mi, 04 Apr 2007) $ $Id: ValidationInterceptor.java 1437 2007-04-04 15:06:44Z rainerh $ */ public class ValidationInterceptor extends MethodFilterInterceptor { private boolean validateAnnotatedMethodOnly; public boolean isValidateAnnotatedMethodOnly() { return validateAnnotatedMethodOnly; } /** * Determine if validate() should always be called or only per annotated method. * Default to "false". * * @param validateAnnotatedMethodOnly */ public void setValidateAnnotatedMethodOnly(boolean validateAnnotatedMethodOnly) { this.validateAnnotatedMethodOnly = validateAnnotatedMethodOnly; } /** * Gets the current action and its context and calls {@link DefaultActionValidatorManager#validate(Object, String)}. * * @param invocation the execution state of the Action. * @throws Exception if an error occurs validating the action. */ protected void doBeforeInvocation(ActionInvocation invocation) throws Exception { Object action = invocation.getAction(); String context = invocation.getProxy().getActionName(); String method = invocation.getProxy().getMethod(); if (log.isDebugEnabled()) { log.debug("Validating " + invocation.getProxy().getNamespace() + "/" + invocation.getProxy().getActionName() + " with method "+ method +"."); } if (validateAnnotatedMethodOnly) { ActionValidatorManagerFactory.getInstance().validate(action, context, method); } else { ActionValidatorManagerFactory.getInstance().validate(action, context); } } protected String doIntercept(ActionInvocation invocation) throws Exception { doBeforeInvocation(invocation); return invocation.invoke(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy