验证特定操作映射的方法

时间:2012-09-07 06:51:02

标签: validation struts2

我的struts 2 xml文件中有2个动作映射,它映射到同一个动作类的2个方法,如下所示

<action name="action1" class="com.web.action.MyAction method="myMethod1">
            <result>success1.jsp</result>
</action>
<action name="action2" class="com.web.action.MyAction method="myMethod2">
            <result>success2.jsp</result>
</action>

我还重写了ActionSupport类的validate()方法。现在我希望这个validate方法只应该针对action1而不是针对action2执行。有办法吗?我知道我可以将2个方法放在单独的动作类中,这样可行。

2 个答案:

答案 0 :(得分:1)

“validation”拦截器使用与“prepare”拦截器相同的前缀方法实用程序。

“验证”拦截器将调用特定于方法的验证方法;对于您的具体示例:

public void validateMyMethod1() { ... }
public void validateMyMethod2() { ... }

请参阅"validation" interceptor docs,但为了更好/更详细,请"prepare" interceptor docs

答案 1 :(得分:0)

到目前为止,这是不可能直接告诉我们应该调用哪个动作调用validate方法,可能的解决方案很少

  1. 按照您的建议将它们移到单独的类中。
  2. 切换到编程验证方法,例如创建一个方法相同myCustomvalidation,您可以从myMethod1方法内部调用该方法。