Struts2:可以使用动态方法调用并为不同的方法指定不同的验证规则吗?

时间:2010-04-23 14:27:38

标签: java dynamic struts2 validation

我有struts.xml:

    <action name="MyAction!*" class="my.Action" method="{1}">
        <result name="step1">step1.jsp</result>
        <result name="step2">step2.jsp</result>         
        <result name="error">error.jsp</result>
    </action>

然后我的my.Action类有各种方法可以通过在URL中指定名称来调用,例如:

http://localhost:8080/MyApp/MyAction!method1.action

现在我们假设字段firstNamelastName在一种方法中是强制性的(例如注册的第一步),而不是在其他方法中。

如果我制作像MyAction-validation.xml这样的通用验证文件,它将生成所有方法所需的字段。如果我进行MyAction-method1-validation.xml之类的特定验证,则不会将其考虑在内。

有解决方案吗?

否则我将不得不在每个方法的struts.xml中映射不同的操作,而不是使用动态方法调用 - 或者手动进行验证。

2 个答案:

答案 0 :(得分:0)

如果要使用编程方法进行验证,可以执行此操作。这通常使用validate()方法完成,但您可以为validatevalidateStep1等特定操作方法创建validateStep2方法。这些方法仅验证{{} 1}}和step1方法。我不确定是否有可用于为不同方法使用不同XML文件的选项。

此外,您不需要在操作中使用通配符映射来使用动态方法调用。只需使用:

step2

答案 1 :(得分:0)

Struts 2的JIRA中存在一个漏洞:

https://issues.apache.org/jira/browse/WW-1967

自2007年6月以来一直开放,所以我怀疑它是否会被修复。