我在一段时间内使用过Struts2
,但我仍然对Struts2
验证感到困惑。
我已经使用xml-validation或方法addFieldError()
进行验证,但是当我第一次输入表单页面,带有struts-tags的页面和<s:form>
时,我不能只是通过href-link转到这个页面,我必须经历另一个动作,我读到那个带有struts-tags的页面jsp必须来自一个动作。
我通常创建一个仅用于重定向到此输入页面的Action,在execute()
方法中只是“成功”,此操作的作用是合法地转到输入页面,并在处理输入表单的操作中输入页面,我选择“输入”结果仍然是这个输入页面。
所以,我觉得这样做很不舒服,我总是有GoToSiteAction
,只是第一次去输入页面。
所以,我真的需要你的帮助!!
答案 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插件会自动为我们执行此操作...因此,如果我们希望通过引用它直接输入表单,这非常方便。
尝试一下,你会明白我的意思。