Struts2 validation验证讲解(annotaion方式)
来源:互联网 发布:数据库增删改查语句 编辑:程序博客网 时间:2024/06/06 04:47
Struts2提供的validation验证有两种实现方式,我们常见的都是写xml配置格式,下面我们来看看用注解如何实现。
我们可以在需要验证的方法上写上以下注解:
@Validati*****(requiredStrings = {
@RequiredStringValidator(fieldName = "oldPassword", message = "旧密码不允许为空!"),
@RequiredStringValidator(fieldName = "newPassword", message = "新密码不允许为空!")},
stringLengthFields = {
@StringLengthFieldValidator(fieldName = "newPassword", minLength = "4", maxLength = "20", message = "新密码长度只允许为4-20!")})
@RequiredStringValidator代表进行字符串非空验证,fildName是指需要验证的参数名称,message为验证失败后显示的信息。
其实struts2中内置了很多验证方法,稍后会将这些方法列出来。
写到这里,肯定有很多朋友会出现这样的问题:以上代码并不是只针对单个方法进行验证,而是对所有方法都进行了验证,其实我们可以对不需要验证的方法上写了@SkipValidation注解。。但这样又出现了问题,若有两个方法都需要进行验证但参数又不相同,那怎么办呢?
这样我们就需要配置struts2的validation interceptor的一个参数validateAnnotatedMethodOnly为true即可。
默认情况下suts2tr的配置中没有配置这个参数,所以需要我们自己重新配置一下defaultStack:
代码如下:
<interceptors>
<interceptor-stack name="defaultParentStack">
<interceptor-ref name="exception"/>
<interceptor-ref name="alias"/>
<interceptor-ref name="servletConfig"/>
<interceptor-ref name="i18n"/>
<interceptor-ref name="prepare"/>
<interceptor-ref name="chain"/>
<interceptor-ref name="debugging"/>
<interceptor-ref name="scopedModelDriven"/>
<interceptor-ref name="modelDriven"/>
<interceptor-ref name="fileUpload"/>
<interceptor-ref name="checkbox"/>
<interceptor-ref name="multiselect"/>
<interceptor-ref name="staticParams"/>
<interceptor-ref name="actionMappingParams"/>
<interceptor-ref name="params">
<param name="excludeParams">dojo\..*,^struts\..*</param>
</interceptor-ref>
<interceptor-ref name="conversionError"/>
<!--配置方法级别的校验 -->
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,browse</param>
<param name="validateAnnotatedMethodOnly">true</param>
</interceptor-ref>
<interceptor-ref name="workflow">
<param name="excludeMethods">input,back,cancel,browse</param>