Struts2验证

Struts2验证,struts2,Struts2,我在一段时间内使用了Struts2,但我仍然对Struts2验证感到非常困惑 我使用了xml验证,或者方法addFieldError()来验证,但是当我第一次来到输入表单页面时,一个带有struts标记的页面和一个,我不能仅仅通过href链接进入这个页面,我必须经历另一个操作,我看到带有struts标记的页面jsp必须来自一个操作 我通常创建一个动作,只是为了重定向到这个输入页面,在execute()方法中只是“成功”,这个动作的作用是合法地进入输入页面,而在处理输入表单输入页面的动作中,我选择

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

我使用了xml验证,或者方法
addFieldError()
来验证,但是当我第一次来到输入表单页面时,一个带有struts标记的页面和一个
,我不能仅仅通过href链接进入这个页面,我必须经历另一个操作,我看到带有struts标记的页面jsp必须来自一个操作

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

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


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

您没有使用struts2 conventions插件,或者没有完全使用它。请参阅:在这个页面中搜索字符串“动作和结果到模板映射的例子”,并考虑下面的表。 将来,在将struts2 conventions插件jar添加到项目中之后,在所有未来表单的末尾添加后缀“-input”

假设我们创建了一个表单来添加新员工:

/WEB-INF/content/add-employee-input.jsp
struts2表单标记将引用java类中一个简单称为“add employee”的操作,该类可能命名为
com.mypackages.struts2.AddEmployee
,如果add employee操作验证失败,则返回“input”,并再次呈现“add employee input”表单。但是,我们不需要创建“添加员工输入”操作,约定插件将自动为我们执行此操作。。。因此,我们可以直接输入表格,如果我们希望通过引用它,这是非常方便的


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

你没有使用struts2 conventions插件,或者没有完全使用它。请参阅:在这个页面中搜索字符串“动作和结果到模板映射的例子”,并考虑下面的表。 将来,在将struts2 conventions插件jar添加到项目中之后,在所有未来表单的末尾添加后缀“-input”

假设我们创建了一个表单来添加新员工:

/WEB-INF/content/add-employee-input.jsp
struts2表单标记将引用java类中一个简单称为“add employee”的操作,该类可能命名为
com.mypackages.struts2.AddEmployee
,如果add employee操作验证失败,则返回“input”,并再次呈现“add employee input”表单。但是,我们不需要创建“添加员工输入”操作,约定插件将自动为我们执行此操作。。。因此,我们可以直接输入表格,如果我们希望通过引用它,这是非常方便的


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

使用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>


附属机构Id不能为空
密码不能为空
5.
30
密码不能小于5或大于30


点击操作时,它将首先点击验证xml并检查验证,然后处理操作类部分。

使用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>


附属机构Id不能为空
密码不能为空
5.
30
密码不能小于5或大于30


当您点击操作时,它将首先点击验证xml并检查验证,然后处理操作类部分。

这是标准方式,因为S2需要初始化多个组件才能正常工作,并请求shd通过S2调度程序过滤器。这是标准方式,因为S2需要初始化多个组件为了正确工作,请通过s2调度员过滤器请求shd,谢谢您的回复。但是我仍然将input.jsp放在addemloye操作的结果“input”中以进行回调,如果验证是错误的,并且如果我第一次进入这个输入站点,我会看到一些错误字段(例如:用户名为空…,因为输入站点是由AddEmployee操作处理的)@user1348567那么您的操作写得不正确--
输入
结果不应该对其应用验证,
输入
操作方法是验证侦听器跳过的方法之一。是的,谢谢您的回复。但是我仍然将input.jsp放在addemloye操作的结果“input”中以进行回调,如果验证是错误的,并且如果我第一次进入这个输入站点,我会看到一些错误字段(例如:用户名为空…,因为输入站点是由AddEmployee操作处理的)@user1348567那么您的操作写得不正确--
输入
结果不应该对其应用验证,
输入
操作方法是验证拦截器跳过的方法之一。