第一种,最简单的,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中配置,类似于下
- <span style="font-size:13px;">this.addActionError("您输入的登录名:<span style='color:blue'>"
- + this.getStaff().getLoginName() + "</span>已经存在!");
- </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"/>
- <span style="font-size:18px;color:#FF0000;">其实最大的区别就是。feilderror是针对整个action的,意思就是无论action里面有多少个方法,无论执行哪个方法,之前都要走一遍这个验证,
- 所以fielderror最好是action里面所有方法的公共域。而actionerror比较灵活,只需要在action方法中声明add就可以了</span>