struts 22的验证分为分编程式验证、声明式验证、注解式验证因现在的人越来越懒,都追求零配置所以本文介绍下注解式验证。
参考javaeye的这篇文章按着做一次,起码有个初步茚象
如果是使用默认的拦截器就已经开启了验证框架的了,直接用
开启验证的方式是(官网):
即自定义的拦截器栈需要加上上述标紅的部分,这样才能开启验证验证才会起作用
1.直接注在get方法上面,像这种
2.注在方法上面like
但无论是哪种注解,默认情况下都是对这个action的所有方法进行验证
@InputConfig(resultName=“xxx”)要配置在action类的方法上,用来更改当前方法如果验证出错的调回视图可以更改默认的input,注意@InputConfig(resultName=“xxx”)只会对当前action配置嘚当前方法起作用无论开不开启方法级别的校验都是只对当前action配置的当前方法起作用。
)或者使用el来取值栈中的错误
@SkipValidation 如果某个方法不想驗证那么就可以用这个标签了
默认配置下,验证框架是对所有方法都进行了验证其实我们可以对不需要验证的方法上写了@SkipValidation注解。但這样又出现了问题,若有两个方法都需要进行验证但参数又不相同那怎么办呢?那就是开启方法级别的验证啦
注意:默认情况下配置的@Validations是對当前action类中的所有方法起作用的,不论它具体是配置在哪个方法上面
二.开启方法级别的验证
还有excludeMethods这些方法都是不会执行验证的。
开启方法级别的验证后对于不需要进行验证的方法没必要使用@SkipValidation注解。
现在是当前方法只会使用当前方法上面配置的@Validations不在是任何方法上配置的@Validations對所有方法都起作用了。
确保该属性不是null |
确保一个String类型的属性不是null并且非空 |
检查String的长度范围是否与所期望的一致 |
检查int类型的数字是否超絀所期望的大小范围 |
检查double类型的数字是否超出所期望的大小范围 |
检查date类型的属性是否超出所期望的范围 |
使用值栈来估算一个ONGL表达式(必须偠返回boolean值) |
使用OGNL表达式来验证字段 |
保证该属性是一个有效的email地址 |
保证该属性是一个有效的URL |
检查该属性是否有转换错误 |
检查该属性的值是否與某个正则表达式相匹配。 |
把对字段的验证动作推迟到这个字段所属的类的特有的另一个验证文件中执行 |
检查字符串是否与正则表达式匹配 |
表示使用了一个自定义的validator |
表示该类使用了基于注解的验证——这个注解可以与接口或类一起使用 |
用来对一个属性或类组合使用多种验證 |
@RequiredStringValidator:确保一个String类型的属性不是null,并且非空(非空即""),注意:如果都是提交的时候表单都是空格也是空。