【问题标题】:How to write one action class and action-validation.xml to validate two forms in a two different jsp pages by struts2struts2如何编写一个动作类和action-validation.xml来验证两个不同jsp页面中的两个表单
【发布时间】:2010-08-04 12:54:04
【问题描述】:
我正在创建一个 struts2 应用程序,它有一个登录页面和另一个用户详细信息页面。在那里,我只需要创建一个动作类。因此,我无法通过将两个页面中的字段验证添加到 action-validation.xml 来运行应用程序。因为通过登录页面验证,它会验证validation.xml 中剩余的字段验证(属于用户详细信息页面的字段验证)。
因此,请分享您在 struts2 中的知识,以使用带有 action-validation.xml 的一个动作类进行两个页面(表单)验证。
【问题讨论】:
标签:
java
struts2
validation
【解决方案1】:
您可以将wildcard mappings 和associating your validation rules 与您的单个操作类一起使用:
通配符映射
在您的 struts.xml 中,定义如下操作:
<action name="user-*" class="DoSomething" method="{1}" >
<result name="input">/WEB-INF/{1}.jsp</result>
<result name="success">/WEB-INF/{1}-success.jsp</result>
</action>
然后您可以使用以下两个 URL 之一调用 DoSomething 操作类:
http://yourapp.com/user-login.action
http://yourapp.com/user-details.action
结果将是连字符之后的请求部分(“登录”或“详细信息”)将替换您的操作定义中的{1}。因此,第一个 URL 将调用 DoSomething.login() 方法,转到 INPUT 上的 login.jsp 或 SUCCESS 上的 login-success.jsp。
您所要做的就是在DoSomething 类中定义login() 和details() 方法。
验证规则关联
要将验证规则与您的 DoSomething 操作类相关联,只需将包含它们的 .xml 文件命名为 DoSomething-validation.xml。由于用户登录和用户详细信息请求都使用该类,因此将为它们运行规则。