1、action继承ActionSupport 复写validate方法,但是这样子在页面上调用action中的任何一个方法都会调用该validate方法,所以不推荐
2、同样是action继承ActionSupport 但是不复写validate方法,直接写一个页面上所要调用的方法的校验方法 validateXxx方法。
3、资源文件配置方式实现校验
1、1action中的代码如下:
@Override public void validate() { if(users.getUname()==null||users.getUname().length()<3||users.getUname().length()>15){ this.addFieldError("users.uname", "密码长度必须在3-15"); } super.validate(); }
1.2自定义校验方法的代码如下:
public void validateExecute() { if(users.getUname()==null||users.getUname().length()<3||users.getUname().length()>15){ this.addFieldError("users.uname", "密码长度必须在3-15"); } }
1.3、局部资源文件(利用配置资源文件完成校验)
1.3.1、在web下面新建一个RegisterAction-validation.xml文件,这里用来配置需要校验的字段信息(代码如下)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="users.uname"> <field-validator type="requiredstring" short-circuit="true"> <param name="trim">true</param> <message>用户名不能为空</message> </field-validator> <field-validator type="stringlength"> <param name="minLength">3</param> <param name="maxLength">15</param> <message>用户名必须在${minLength}-${maxLength}之间</message> </field-validator> </field> <field name="users.upass"> <field-validator type="requiredstring" short-circuit="true"> <param name="trim">true</param> <message>密码不能为空</message> </field-validator> <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">15</param> <message>密码必须在${minLength}-${maxLength}之间</message> </field-validator> </field> <field name="users.reupass"> <field-validator type="fieldexpression"> <param name="expression">users.upass==users.reupass</param> <message>两次密码不一致</message> </field-validator> </field> <field name="users.age"> <field-validator type="required" short-circuit="true"> <message>年龄不能为空</message> </field-validator> <field-validator type="int"> <param name="min">1</param> <param name="max">150</param> <message>年龄应该在${min}-${max}之间</message> </field-validator> </field> <field name="users.birthday"> <field-validator type="required" short-circuit="true"> <message>生日不能为空</message> </field-validator> <field-validator type="date"> <param name="min">1900-01-01</param> <param name="max">2050-01-01</param> <message>生日应该在${min}-${max}之间</message> </field-validator> </field> <field name="users.graduation"> <field-validator type="required" short-circuit="true"> <message>毕业时间不能为空</message> </field-validator> <field-validator type="fieldexpression"> <param name="expression">users.birthday<users.graduation</param> <message>毕业时间应该大于生日</message> </field-validator> </field> <field name="users.email"> <field-validator type="requiredstring" short-circuit="true"> <param name="trim">true</param> <message>邮箱必填</message> </field-validator> <field-validator type="email"> <message key="invalid.email"></message> </field-validator> </field> </validators>
1.3.2、目录结构(比较重要的是局部资源文件的命名模式)
1.3.3、局部资源文件中的类容
值得注意的是:1、struts2的配置文件相当多,所以它的命名规则需要遵守,最好的学习方式就是模仿。
2、利用框架实现输入校验能完成一些js校验所不能完成的事情,但是也不能滥用,否则会增加服务器的压力。合理的做法是前台验证和后台验证相结合。
源码下载请点这里: