Struts2验证

时间:2012-04-21 16:53:40

标签: struts2

我在一段时间内使用过Struts2,但我仍然对Struts2验证感到困惑。

我已经使用xml-validation或方法addFieldError()进行验证,但是当我第一次输入表单页面,带有struts-tags的页面和<s:form>时,我不能只是通过href-link转到这个页面,我必须经历另一个动作,我读到那个带有struts-tags的页面jsp必须来自一个动作。

我通常创建一个仅用于重定向到此输入页面的Action,在execute()方法中只是“成功”,此操作的作用是合法地转到输入页面,并在处理输入表单的操作中输入页面,我选择“输入”结果仍然是这个输入页面。

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

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

2 个答案:

答案 0 :(得分:1)

使用with输入字段,创建操作并创建与java文件名同名的验证xml文件 例如: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并检查验证然后处理动作类部分。

答案 1 :(得分: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表单标记将引用一个简单称为“add-employee”的操作,该类可能名为com.mypackages.struts2.AddEmployee,如果add-employee操作验证失败,则返回“input”并返回“add” -employee-input“表单再次呈现。但是我们不需要创建“添加员工输入”操作,convention插件会自动为我们执行此操作...因此,如果我们希望通过引用它直接输入表单,这非常方便。

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