• Spring Validation 验证


    基本配置

    1.pom引入maven依赖

    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>1.1.0.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.4.0.Final</version>
    </dependency>

    2.增加validation配置

    在spring-mvc-servlet.xml中增加如下配置:

      <!-- 校验器注入到处理器适配器中-->

      <mvc:annotation-driven validator="validator"></mvc:annotation-driven>

      <!-- 校验器 -->
        <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>

    3.CustomValidationMessages.properties

    #添加校验错误提交信息
    items.name.length.error=请输入1到30个字符 items.createtime.isNUll=请输入日期

    4. pojo中添加校验规则

    public class Items {
        private Integer id;
    
        //校验名称在1到30字符中间
        //message是提示校验出错显示的信息
        //groups:此校验属于哪个分组,groups可以定义多个分组
        @Size(min=1,max=30,message="{items.name.length.error}"})
        private String name;
    
        private Float price;
    
        private String pic;
    
        //非空校验
        @NotNull(message="{items.createtime.isNUll}")
        private Date createtime;

    5. 捕获校验错误信息

    @RequestMapping("/edit")
    public String editItem(HttpServletRequest request,
           @Validate Items item,BindingResult bingdingResult ){
          // TODO  
    }    
    
    //在需要校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult bindingResult接收校验出错信息
        //注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。

    6.分组校验

    需求:

    在pojo中定义校验规则,而pojo是被多个 controller所共用,当不同的controller方法对同一个pojo进行校验,但是每个controller方法需要不同的校验。、

    解决方法:

    定义多个校验分组(其实是一个java接口),分组中定义有哪些规则

    每个controller方法使用不同的校验分组

    public interface ValidGroup1 {
        //接口中不需要定义任何方法,仅是对不同的校验规则进行分组
        //此分组只校验商品名称长度
    
    }
    public interface ValidGroup2 {
        //接口中不需要定义任何方法,仅是对不同的校验规则进行分组
    
    }

    6.1  在校验规则中添加分组

    public class Items {
        private Integer id;
    
        //校验名称在1到30字符中间
        //message是提示校验出错显示的信息
        //groups:此校验属于哪个分组,groups可以定义多个分组
        @Size(min=1,max=30,message="{items.name.length.error}",groups={ValidGroup1.class})
        private String name;
    
        private Float price;
    
        private String pic;
    
        //非空校验
        @NotNull(message="{items.createtime.isNUll}")
        private Date createtime;
        // 在需要校验的pojo前边添加@Validated,在需要校验的pojo后边添加BindingResult
        // bindingResult接收校验出错信息
        // 注意:@Validated和BindingResult bindingResult是配对出现,并且形参顺序是固定的(一前一后)。
        // value={ValidGroup1.class}指定使用ValidGroup1分组的 校验
        // @ModelAttribute可以指定pojo回显到页面在request中的key
        @RequestMapping("/editItemsSubmit")
        public String editItemsSubmit(HttpServletRequest request, 
         
    @Validated(value = { ValidGroup1.class })
          ItemsCustom itemsCustom, BindingResult bindingResult){ }


  • 相关阅读:
    进程同步和死锁;事务、悲观锁、乐观锁、表锁、行锁
    快速排序
    oracle索引分类
    数据结构
    MySQL视图
    sql优化的方法
    MySQL索引
    转:关于ROWNUM的使用
    转载:mybatis踩坑之——foreach循环嵌套if判断
    Spring 注意事项
  • 原文地址:https://www.cnblogs.com/zcjyzh/p/11692150.html
Copyright © 2020-2023  润新知