springmvc服务端校验hibernate validation配置

来源:互联网 发布:最好的网络营销软件 编辑:程序博客网 时间:2024/05/16 06:50

springmvc服务端校验hibernate validation的配置

步骤如下:

0.需要引3个jar包
    hibernate-validator-4.3.0.Final.jar
    jboss-logging-3.1.0.CR2.jar
    validation-api-1.0.0.GA.jar



1.在src目录下创建CustomValidationMessages.properties文件(错误描述信息)

2.在pojo中写po中类的属性中写注解,我也就我们的限制条件
class User{
    @Size(min=1,max=10,message="{CustomValidationMessages文件中的key字符串}")
    private String username;
}
@Size(min=1,max=10)表示这个属性的值长度位1到10

message 中填写的是CustomValidationMessages文件中的key值

注意:message需指定,否则校验失败没有提示信息


3.在Controller的类中的添加注解,已UserController为例子
class UserController{
    ....
    public String save(@Validated User user,BindingResult br){
        if(br.hasErrors()){
            //如果有错误就会进来
            List ls = bindingResult.getAllErrors();
            model.addAttribute("error", ls);
            return "login";
        }
        //其他代码
    } 
}
@Validated User user,BindingResult br
写法固定@Validated Pojo pojo,BindingResult br


ls.get(0).getDefaultMessage()为错误信息


4.springmvc.xml中的配置
下面写法固定,只需变动的是指定properties文件

<!-- 注解驱动 -->
    <mvc:annotation-driven conversion-service="conversionService" validator="validator"/>

    <bean id="validator"
        class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <!-- hibernate校验器-->
        <property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
        <!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用classpath下的ValidationMessages.properties -->
        <property name="validationMessageSource" ref="messageSource" />
    </bean>
    <!-- 校验错误信息配置文件 -->
    <bean id="messageSource"
        class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <!-- 资源文件名-->
        <property name="basenames">   
            <list>    
            <value>classpath:CustomValidationMessages</value> 
            </list>   
        </property>
        <!-- 资源文件编码格式 -->
        <property name="fileEncodings" value="utf-8" />
        <!-- 对资源文件内容缓存时间,单位秒 -->
        <property name="cacheSeconds" value="120" />

    </bean>



注解说明

@AssertTrue //用于boolean字段,该字段只能为true

@AssertFalse//该字段的值只能为false

@CreditCardNumber//对信用卡号进行一个大致的验证

@DecimalMax//只能小于或等于该值

@DecimalMin//只能大于或等于该值

@Digits(integer=2,fraction=20)//检查是否是一种数字的整数、分数,小数位数的数字。

@Email//检查是否是一个有效的email地址

@Future//检查该字段的日期是否是属于将来的日期

@Length(min=,max=)//检查所属的字段的长度是否在minmax之间,只能用于字符串

@Max//该字段的值只能小于或等于该值

@Min//该字段的值只能大于或等于该值

@NotNull//不能为null

@NotBlank//不能为空,检查时会将空格忽略

@NotEmpty//不能为空,这里的空是指空字符串

@Null//检查该字段为空

@Past//检查该字段的日期是在过去

@Size(min=, max=)//检查该字段的size是否在minmax之间,可以是字符串、数组、集合、Map

@URL(protocol=,host,port)//检查是否是一个有效的URL,如果提供了protocolhost等,则该URL还需满足提供的条件

@Valid//该注解只要用于字段为一个包含其他对象的集合或map或数组的字段,或该字段直接为一个其他对象的引用,

//这样在检查当前对象的同时也会检查该字段所引用的对象



0 0
原创粉丝点击