根据Struts2操作中调用的操作方法定义不同的验证

时间:2013-08-02 13:29:55

标签: java forms validation struts2 annotations

我正在使用Struts 2创建一个Web应用程序。在JSP文件中,我创建了一个这样的表单:

<s:form action="actionclassname!%{methodToCall}" method="post">
...
</s:form> 

在动作类中,我创建了两个方法,这些方法将根据变量methodToCall的值进行调用。这很好用。 我的问题是action类的两个方法需要一些验证。因此,如果调用第一个方法,我使用注释来验证表单:

@Validations(....) 
public String actionMethod1(){
    ...
}

@Validations(...) 
public String actionMehod2(){
    ...
}

第一种方法适用于验证。我的问题在于第二种方法。看起来当我为第二种方法定义验证(也使用注释)时,我在第一种方法上定义的验证在我为第二种方法定义的验证之前再次执行。

当JSP调用此方法时,如何对要运行的第二个方法进行验证?

1 个答案:

答案 0 :(得分:0)

在通过注释的动作配置中,您应该使用参数validateAnnotatedMethodOnly作为验证拦截器,就像在此示例中一样

@Action(value="actionclassname", results = {
  @Result(name="input", location = "/actionclassname.jsp")
},interceptorRefs = @InterceptorRef(value="defaultStack", params = {"validation.validateAnnotatedMethodOnly", "true"}))