Spring MVC Validator- 验证器配置及分组校验

Validator - 验证器

快速入门

导入jar包

这里写图片描述

配置校验器

    <!-- 校验器 -->
    <bean id="validator"
        class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
        <!-- 校验器 -->
        <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>

添加到自定义参数绑定的WebBindingInitializer中

    <!-- 自定义webBinder -->
    <bean id="customBinder"
        class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
        <!-- 配置validator -->
        <property name="validator" ref="validator" />
    </bean>

最终添加到适配器中

    <!-- 注解适配器 -->
    <bean
        class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <!-- 在webBindingInitializer中注入自定义属性编辑器、自定义转换器 -->
        <property name="webBindingInitializer" ref="customBinder"></property>
    </bean>

创建CustomValidationMessages配置文件

这里写图片描述

定义规则

package entity;import javax.validation.constraints.NotNull;import javax.validation.constraints.Size;import java.util.Date;public class Items {    private Integer id;    //商品名称的长度请限制在1到30个字符
    @Size(min=1,max=30,message="{items.name.length.error}")    private String name;    private Float price;    private String pic;    //请输入商品生产日期
    @NotNull(message="{items.createtime.is.notnull}")    private Date createtime;    private String detail;    public Integer getId() {        return id;
    }    public void setId(Integer id) {        this.id = id;
    }    public String getName() {        return name;
    }    public void setName(String name) {        this.name = name == null ? null : name.trim();
    }    public Float getPrice() {        return price;
    }    public void setPrice(Float price) {        this.price = price;
    }    public String getPic() {        return pic;
    }    public void setPic(String pic) {        this.pic = pic == null ? null : pic.trim();
    }    public Date getCreatetime() {        return createtime;
    }    public void setCreatetime(Date createtime) {        this.createtime = createtime;
    }    public String getDetail() {        return detail;
    }    public void setDetail(String detail) {        this.detail = detail == null ? null : detail.trim();
    }
}

测试:

    测试文件上传    名称:    日期:

Controller需要在校验的参数上添加@Validation注解...拿到BindingResult对象...

展开阅读全文

本文系作者在时代Java发表,未经许可,不得转载。

如有侵权,请联系nowjava@qq.com删除。

编辑于

关注时代Java

关注时代Java