Java 基于Struts2操作中调用的操作方法定义不同的验证

Java 基于Struts2操作中调用的操作方法定义不同的验证,java,forms,validation,struts2,annotations,Java,Forms,Validation,Struts2,Annotations,我正在用Struts 2创建一个web应用程序。在JSP文件中,我创建了如下表单: <s:form action="actionclassname!%{methodToCall}" method="post"> ... </s:form> 第一种方法可以很好地进行验证。我的问题在于第二种方法。似乎当我为第二个方法定义验证(也使用注释)时,我在第一个方法上定义的验证会在为第二个方法定义的验证之前再次执行 如何对JSP调用的第二个方法进行验证?在操作配置via annot

我正在用Struts 2创建一个web应用程序。在JSP文件中,我创建了如下表单:

<s:form action="actionclassname!%{methodToCall}" method="post">
...
</s:form> 
第一种方法可以很好地进行验证。我的问题在于第二种方法。似乎当我为第二个方法定义验证(也使用注释)时,我在第一个方法上定义的验证会在为第二个方法定义的验证之前再次执行


如何对JSP调用的第二个方法进行验证?

在操作配置via annotation中,您应该为验证拦截器使用参数
ValidateAnotatedMethodOnly

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

您决定使用注释了吗?我不确定这是否真的得到了支持,但我也倾向于不使用注释来保持我的类尽可能中立。是的,我希望继续使用注释。我尝试了你的建议,但没有成功。我没有使用defaultStack。相反,我使用了我创建的一个。这对结果有影响吗?即使使用defaultStack,它也不起作用。验证总是堆积如山。还有其他建议吗?@PatrickB。如果你没有发布代码,我怎么知道你在使用哪个堆栈?并在方法上添加注释,用于映射您的操作。我并没有责怪您必须使用哪个堆栈。我将注释放在用于映射操作的方法上。它不起作用。他还说它在默认堆栈中不起作用。省略一个细节不会使它偏离主题,你知道它不会。
@Action(value="actionclassname", results = {
  @Result(name="input", location = "/actionclassname.jsp")
},interceptorRefs = @InterceptorRef(value="defaultStack", params = {"validation.validateAnnotatedMethodOnly", "true"}))