struts验证fieldError actionError简单总结

今天上班,发现对于struts验证那套全然不通,现在总结几个

第一种,最简单的,Struts2 使用addFieldError方法和s:fieldError标签简单处理数据校验

步骤:

第一步:action-validation.xml配置

[java] view plain copy
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <!DOCTYPEvalidatorsPUBLIC"-//ApacheStruts//XWorkValidator1.0.2//EN""http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
  3. <validators>
  4. <fieldname="testquestionVO.areaId">
  5. <field-validatortype="required">
  6. <message>地区编码不能为空!</message>
  7. </field-validator>
  8. <field-validatortype="int">
  9. <paramname="min">0</param>
  10. <paramname="max">999999</param>
  11. <message>地区编码必须是介于0999999之间的整数!</message>
  12. </field-validator>
  13. </field>

或者在action中配置 this.addFieldError("testquestionVO.areaId", "您输入的帐号不存在!");

第二步:jsp页面配置
<div><s:fielderror fieldName="testquestionVO.areaId"/></div>

当然,在配置这些时,struts中需配置input,以保证当页面验证不通过可以返回到正确的页面

这样就OK了。链接一个比较详细的http://hi.baidu.com/469741414/blog/item/4fa3918d5a218fef503d92e2.html

第二种,Struts2 使用ActionError方法和s:actionError标签简单处理数据校验

这个算下来更简单,

第一步,在action中配置,类似于下

[java] view plain copy
  1. <spanstyle="font-size:13px;">this.addActionError("您输入的登录名:<spanstyle='color:blue'>"
  2. +this.getStaff().getLoginName()+"</span>已经存在!");
  3. </span>

第二步,在jsp页面中配置

[java] view plain copy
  1. <s:actionerrorescape="false"/>


这两种方式是有区别的,

addActionError()addFieldError()有什么不同, 这里说一说,


这两个都是com.opensymphony.xwork2.ActionSupport类下的方法.

----------------------------------------------------------------------------------

addActionError(StringanErrorMessage)

添加一个Action级别的错误消息到Action

anErrorMessage:错误消息

显示消息的标签是:<s:actionerror/> ,显示全部的Action级别的错误消息,可以加CSS

anErrorMessage被存放在List中. 可以去看源码

----------------------------------------------------------------------------------


addFieldError(StringfieldName,StringerrorMessage)

给一个字段(属性) 添加错误消息

fieldName:字段(属性)名

errorMessage:错误消息

errorMessage被存放在一个Map中. 可以去看源码

显示消息的标签是:

<!-- 例子 1 -->

<s:fielderror/>显示全部的错误消息(用addFieldError方法添加的)

<!--例子2 -->

<s:fielderror theme="" fieldName="fuwuId"/>

<!--例子3 -->

<s:fielderror>

<s:param>field1</s:param>显示指定的field1字段的错误消息

<s:param>field2</s:param>显示指定的field2字段的错误消息

</s:fielderror>

<s:form .... > .... </s:form>

------------------------------------------------------------------

默认主题下,<s:form />能显示错误信息,能自动添加表格排版,

修改主题:<s:formtheme="simple">不能显示错误信息,不能自动添加表格排版,我们才好自己发挥啊.

-----------------------------------------------

ActionSupport类还有一个public booleanhasErrors() 方法, 其实他内部实现是这样的:

(hasActionErrors() || hasFieldErrors()) , 分别检查有无Action级别的错误信息, 有无Fidld级别的错误的信息.

只要一个为真, 就跳回input 实图, 并显示错误信息(如果你写了相应的标签)


[java] view plain copy
  1. <s:actionerrorescape="false"/>

[java] view plain copy
  1. <spanstyle="font-size:18px;color:#FF0000;">其实最大的区别就是。feilderror是针对整个action的,意思就是无论action里面有多少个方法,无论执行哪个方法,之前都要走一遍这个验证,
  2. 所以fielderror最好是action里面所有方法的公共域。而actionerror比较灵活,只需要在action方法中声明add就可以了</span>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值