初学structs2,表单验证简单补充
一、使用注解方式,跳过验证某个方法
由于在开发中,我们不需在请求每一个action类中的方法时都要走validate方法,那么我们可以在这些不需要验证的方法上加上@SkipValidation注解即可
二、不重写Validate方法下,通过使用validate或validateDo前缀来指定类中哪个方法需要进行验证
如果一个Action类中只有几个方法需要验证,而大部分不需要,那么就可以使用指定哪个方法需要进行验证的方式来做如下两个方法
public void validateSearch(){
if(name==null||name.equals("")){
addFieldError("name","用户名为空");
}
}
或
public void validateDoSearch(){
if(name==null||name.equals("")){
addFieldError("name","用户名为空");
}
}
三、通过配置来对Bean属性进行验证(此方法自己试了一次,然后琢磨了一段时间,竟然没有试验成功,基于后期用到的可能性不大就没有继续研究)
在action类的包下,要与action类同级别,添加xml文件,action类名-validation.xml,action类中也就不用重写validate方法了
假设action类中有String类型的name和Integer类型的age两个字段,xml文件的内容如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator Definition 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-definition-1.0.dtd"> <validators> <!-- Action中要校验的字段 --> <field name="name"> <!-- 指定校验器 --> <field-validator type="requiredstring"> <!-- 配置校验参数 --> <!-- <param name="trim">false</param>是否移除前后空格 --> <!-- 校验失败显示信息 --> <message>用户名不能为空</message> </field-validator> <!-- 增加另一个校验器,使用正则校验器 <field-validator type="regex"> <param name="regex">^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$</param> <message>用户名必须是邮箱</message> </field-validator> --> </field> <!-- 校验年龄字段,整数类型,范围0~120 --> <field name="age"> <!-- 指定校验器 --> <field-validator type="int"> <!-- 配置校验参数 --> <param name="min">0</param> <param name="max">120</param> <message>填写的年龄必须在0~120之间</message> </field-validator> </field> </validators>
四,通过配置,还可以指定action中的某个方法,来进行校验,基本不用,说起来还啰嗦,就不写了