出处:http://www.cnblogs.com/Laupaul/archive/2012/03/15/2398360.html
使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件的取名格式为:ActionClassName-validation.xml。ActionClassName为action的简单类名,-validation为固定写法。如果Action类为cn.validate.action.UserAction,那么该文件的取名为:UserAction-validation.xml。
下面是xml配置信息
1 <!DOCTYPE validators PUBLIC 2 "-//Apache Struts//XWork Validator 1.0.2//EN" 3 "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd"> 4 5 <validators> 6 <field name="username"> 7 <field-validator type="requiredstring"><!-- 必填字符串校验器 --> 8 <param name="doTrim">true</param><!-- 去掉两边空格 --> 9 <message>用户名不能为空</message> 10 </field-validator> 11 </field> 12 <field name="mobile"> 13 <field-validator type="requiredstring"><!-- 必填字符串校验器 --> 14 <param name="doTrim">true</param><!-- 去掉两边空格 --> 15 <message>手机号码不能为空</message> 16 </field-validator> 17 <field-validator type="regex"><!-- 正则表达式校验器 --> 18 <param name="expression"><![CDATA[^1[358]\d{9}$]]></param><!-- 表达式 --> 19 <param name="caseSensitive">false</param><!-- 区分大小写 --> 20 <param name="trim">true</param><!-- 去掉两边空格 --> 21 <message>手机号码格式不正确</message> 22 </field-validator> 23 </field> 24 </validators>
action类:
1 package cn.validate.action; 2 3 import com.opensymphony.xwork2.ActionContext; 4 import com.opensymphony.xwork2.ActionSupport; 5 6 @SuppressWarnings("serial") 7 public class XmlValidationAction extends ActionSupport { 8 private String username; 9 private String mobile; 10 11 public String getUsername() { 12 return username; 13 } 14 15 public void setUsername(String username) { 16 this.username = username; 17 } 18 19 public String getMobile() { 20 return mobile; 21 } 22 23 public void setMobile(String mobile) { 24 this.mobile = mobile; 25 } 26 27 public String update() { 28 ActionContext.getContext().put("message", "update success!"); 29 return "success"; 30 } 31 32 public String sace() { 33 ActionContext.getContext().put("message", "save success!"); 34 return "success"; 35 } 36 }
对于指定方法进行校验我们又该怎么做呢?
很简单,我们只需要改下xml文件名即可。格式为ActionClassName-ActionName-validation.xml,其中ActionName为struts.xml中action名称。
比如:在XmlValidationAction中的update()进行校验,我们把xml文件名改为 XmlValidationAction-validation_update-validation.xml即可,其他的都一样。
另外struts还提供了很多校验器,我发一些常用的出来,至于用法,大家可以看框架的源码,所属包为com.opensymphony.xwork2.validator.validators
struts框架提供的校验器
required必填校验器
requiredstring必填字符串校验器
stringlength字符串长度校验器
regex正则表达式校验器
int整数校验器
double双精度浮点型校验器
filedexpression字段OGNL表达式校验器
email邮件校验器
url网址校验器
date日期校验器
conversion转换校验器
visitor用于校验action中的符合属性
expressionOGNL表达式校验器