Struts2 的验证规则大概有以下数种:
required:必填校验器
requiredstring:必填字符串校验器
int:整数校验器
double:双精度浮点数校验器
date:日期校验器
expression:表达式校验器
fieldexpression:字段表达式校验器
email:电子邮件校验器
url:网址校验器
visitor:Visitor校验器
conversion:转换校验器
stringlength:字符串长度校验器
regex:正则表达式校验器
常用的验证规则:
1。必填检验
<validators>
<field name="username">
<field-validator type="required">
<message>指定检验失败的提示信息</message>
</field-validator>
</field>
</validators>
2。必填字符串检验
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>指定检验失败的提示信息</message>
</field-validator>
</field>
</validators>
3。整数检验器/浮点检验
<validators>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年纪必须在1到150之间</message>
</field-validator>
</field>
</validators>
4。日期检验
<validators>
<field name="birth">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message key="birth.range"/>
</field-validator>
</field>
</validators>
5.字段表达式检验器(要求指定字段满足一个逻辑表达式)
<validators>
<field name="re_pass">
<field-validator type="required">
<message>指定检验失败的提示信息</message>
</field-validator>
</field>
</validators>
2。必填字符串检验
<validators>
<field name="username">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>指定检验失败的提示信息</message>
</field-validator>
</field>
</validators>
3。整数检验器/浮点检验
<validators>
<field name="age">
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message>年纪必须在1到150之间</message>
</field-validator>
</field>
</validators>
4。日期检验
<validators>
<field name="birth">
<field-validator type="date">
<param name="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message key="birth.range"/>
</field-validator>
</field>
</validators>
5.字段表达式检验器(要求指定字段满足一个逻辑表达式)
<validators>
<field name="re_pass">
<field-validator type="fieldexpression">
<!--指定逻辑表达式 -->
<param name="expression"> (pass eq re_pass)</param>
<message>密码必须和确认密码相等</message>
</field-validator>
</field>
</validators>
6.邮件地址校验
<validators>
<field name="email">
<field-validator type="email">
<message>你的电子邮件地址必须是一个有效的电邮地址</message>
</field-validator>
</field>
</validators>
7。网址 检验
<validators>
<field name="url">
<field-validator type="url">
<message>你的主页地址必须是一个有效的网址</message>
</field-validator>
</field>
</validators>
<param name="expression"> (pass eq re_pass)</param>
<message>密码必须和确认密码相等</message>
</field-validator>
</field>
</validators>
6.邮件地址校验
<validators>
<field name="email">
<field-validator type="email">
<message>你的电子邮件地址必须是一个有效的电邮地址</message>
</field-validator>
</field>
</validators>
7。网址 检验
<validators>
<field name="url">
<field-validator type="url">
<message>你的主页地址必须是一个有效的网址</message>
</field-validator>
</field>
</validators>
8.字符串长度检验
<validators>
<field name="user">
<field-validator type="stringlength">
<param name="minlength">4</param>
<param name="maxlength">20</param>
<message>你的用户名长度必须在4到20之间</message>
</field-validator>
</field>
</validators>
<param name="minlength">4</param>
<param name="maxlength">20</param>
<message>你的用户名长度必须在4到20之间</message>
</field-validator>
</field>
</validators>
9.正则表达式检验
<validators>
<field name="user">
<field-validator type="regex">
<param name="expression_r"><![CDATA[(\w{4,25})]]></param>
<message>您输入的用户名只能是字母和数组,且长度必须在4到25之间</message>
</field-validator>
</field>
validation文件命名规则:action类名-访问的方法名-validation.xml 例如:DemoAction-demo_save--validation.xml
位置:与action类平级
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"//www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>姓名不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">4</param>
<param name="maxLength">10</param>
<message>姓名 长度必须为4-10之间</message>
</field-validator>
</field>
<field name="address">
<field-validator type="requiredstring">
<param name="trim">true</param>
<!-- 出错信息 -->
<message>地址不能为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">4</param>
<param name="maxLength">10</param>
<message>地址 长度必须为4-10之间</message>
</field-validator>
</field>
</validators>
前端jsp文件案例:
<!--inputResultName属性为实现ValidationWorkflowAware接口覆写属性
解决一个action中多个方法需要检验时
检验失败后都只返回input视图的局限性。具体方法为:在action中implements ValidationWorkflowAware定义inputResultName属性,编写set方法 ,覆写其get方法-->
<s:form action="demo/demo_save.action?inputResultName=saveInput" theme="simple" validate="true">
<table>
<tr>
<td>用户名</td>
<td>
<s:textfield name="name"></s:textfield>
</td>
<td>
<s:fielderror fieldName="name" cssStyle="color:red;list-style: none;margin: 0px;"></s:fielderror>
<!-- 只有当spring设置action bean不为单例模式时(增加 scope="prototype" 属性),该错误提示不会累加显示。或者在action中实现com.opensymphony.xwork2.Preparable接口,在实现方法中调用clearErrorsAndMessages()方法也可以去掉重复信息 --> </td>
</tr>
<tr>
<td>性别</td>
<td>
<s:select list="{'男','女'}" name="sex"></s:select>
</td>
</tr>
<tr>
<td>地址</td>
<td>
<s:textfield name="address" ></s:textfield>
</td>
<td>
<s:fielderror fieldName="address" cssStyle="color:red;list-style: none;margin: 0px;"></s:fielderror>
</td>
</tr>
</table>
<s:submit value="注册" ></s:submit>
</s:form>