struts验证fieldError actionError简单总结

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

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

   步骤:

       第一步:action-validation.xml配置

[java]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">  
  3. <validators>  
  4.  <field name="testquestionVO.areaId">  
  5.   <field-validator type="required">  
  6.    <message>地区编码不能为空!</message>  
  7.   </field-validator>  
  8.   <field-validator type="int">  
  9.    <param name="min">0</param>  
  10.             <param name="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. <span style="font-size:13px;">this.addActionError("您输入的登录名:<span style='color:blue'>"  
  2.      + this.getStaff().getLoginName() + "</span>已经存在!");  
  3. </span>  

     第二步,在jsp页面中配置

[java]  view plain copy
  1. <s:actionerror escape="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 boolean hasErrors() 方法,  其实他内部实现是这样的:

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

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


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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值