1

我用过Struts2一段时间,但对Struts2Validation还是很困惑。

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

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

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

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

4

2 回答 2

1

使用 with input fields ,创建一个动作并创建一个与 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 并检查验证,然后处理操作类部分。

于 2015-08-06T11:07:24.940 回答
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 表单标记将引用一个在 java 类中简单称为“add-employee”的操作,可能名称类似于com.mypackages.struts2.AddEmployeethen 如果 add-employee 操作验证失败,则返回“input”,并再次出现“add-employee-input”表单呈现。但是我们不需要创建一个“add-employee-input”动作,conventions 插件会自动为我们做这件事……因此我们可以通过引用直接输入表单,这非常方便。

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

于 2012-04-22T06:21:43.320 回答