struts验证fieldError actionError简单总结

本文介绍了Struts2中进行数据校验的两种方法:使用addFieldError处理字段级错误和使用addActionError处理Action级别错误。详细讲述了配置过程,包括在action-validation.xml中的设置、在jsp页面上的展示,以及如何处理输入验证失败后的回显。同时,对比了addFieldError和addActionError的区别和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

   步骤:

       第一步:action-validation.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.2//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
 <field name="testquestionVO.areaId">
  <field-validator type="required">
   <message>地区编码不能为空!</message>
  </field-validator>
  <field-validator type="int">
   <param name="min">0</param>
            <param name="max">999999</param>
            <message>地区编码必须是介于0到999999之间的整数!</message>
  </field-validator>
 </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中配置,类似于下

this.addActionError("您输入的登录名:<span style='color:blue'>"
     + this.getStaff().getLoginName() + "</span>已经存在!");

     第二步,在jsp页面中配置

<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 实图, 并显示错误信息(如果你写了相应的标签)


<s:actionerror escape="false"/>


其实最大的区别就是。feilderror是针对整个action的,意思就是无论action里面有多少个方法,无论执行哪个方法,之前都要走一遍这个验证,
所以fielderror最好是action里面所有方法的公共域。而actionerror比较灵活,只需要在action方法中声明add就可以了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值