2012-04-21 65 views
1

我在一段时间内使用了Struts2,但我仍然很怀疑Struts2验证。Struts2验证

我使用了XML验证,或方法addFieldError()验证,但是当我第一次来到输入表单页面,用struts标签页,以及<s:form>,我不能就这么去这个页面由HREF - 链接,我必须通过另一个动作,我读了带有struts标签的页面jsp必须来自一个动作。

而且我通常创建一个Action只是为了重定向到这个输入页面,在​​方法中只是“成功”而且这个动作的作用是去合法的输入页面,并且在处理输入表单input-page ,我选择“输入”结果仍然是这个输入页面。

所以,我觉得这样做不舒服,我总是有一个GoToSiteAction,只是第一次去输入页面。

所以,我真的需要你的帮助!!

+0

这是标准的方式,因为S2需要初始化一些组件以便正常工作并请求shd通过s2调度程序过滤器 – 2012-04-22 02:28:00

回答

0

您没有使用或不使用struts2-conventions插件来获得完整的效果。请参阅:http://struts.apache.org/2.1.6/docs/convention-plugin.html在此页面搜索字符串“操作和结果到模板映射的示例”并考虑下面的表格。

在将struts2-conventions-plugin jar添加到您的项目之后的未来,将后缀“-input”添加到所有未来表单的末尾。

假设我们创建的窗体中添加一个新员工:

/WEB-INF/content/add-employee-input.jsp 

Struts2的表单标签将引用简称大概在名字类似com.mypackages.struts2.AddEmployee Java类“新增员工”的行动,那么如果添加 - 员工行为验证失败,则返回“输入”并再次呈现“添加员工输入”表单。然而,我们不需要创建“add-employee-input”动作,约定插件会自动为我们执行此操作......因此,如果我们希望通过引用它来直接输入表单,这非常方便。

试一试,你会明白我的意思。

+0

是的,谢谢回复。但我仍然将input.jsp放在结果“input”中,以便AddEmloyee Action回调,如果验证是错误的,并且如果我第一次访问该输入网站,我会看到一些错误字段(例如:用户名是空白...,因为输入站点由AddEmployee Action处理) – user1348567 2012-04-22 08:52:39

+0

@ user1348567然后,您的操作被错误地写入 - “输入”结果不应该应用验证,“输入”操作方法是验证跳过的方法之一拦截器。 – 2012-04-22 15:29:50

1

使用输入字段,创建一个动作,并使用相同名称的验证XML文件作为Java文件名 例如:AddInput.java xml文件:AddInput-validation.xml中 把它在同一个包。

像这样在xml文件中编写表单所需的所有验证。

<field name="U_Id"> 
    <field-validator type="requiredstring" short-circuit="true"> 
    <message>Affiliate Id cannot be empty</message> 
    </field-validator> 
</field> 
<field name="Password"> 
    <field-validator type="requiredstring" short-circuit="true"> 
    <message>Password cannot be empty</message> 
    </field-validator> 
    <field-validator type="stringlength"> 
<param name="minLength">5</param> 
<param name="maxLength">30</param> 
<message>Password cannot be less than 5 or more than 30</message> 
</field-validator> 
</field> 

当你打的动作会先打验证XML和检查验证,然后处理动作类部分。