• JSR303 分組数据验证的使用


    场景1: 验证UI字段

    Bean:

    @Data
    @Document(collection = "booking")
    public class Booking implements Serializable {
        
        private static final long serialVersionUID = 4648928973495587158L;
        
        private String businessType;
        @Id
        private String id;
        @NotBlank(message = "bookingNo can't be blank!")
        private String bookingNo;
        private Date bookingDateGMT;
        private Date bookingDateLoc;}

    Controller :

        @PostMapping("/insert")
        public Map<String, Object> insert(@Valid Booking booking, BindingResult bindingResult) 
        {
            Map<String, Object> map = new HashMap<String, Object>();
            if (bindingResult.hasErrors()) 
            {
                List<ObjectError> errorList = bindingResult.getAllErrors();
                List<String> mesList=new ArrayList<String>();
                for (int i = 0; i < errorList.size(); i++) 
                {
                    mesList.add(errorList.get(i).getDefaultMessage());
                }
                map.put("status", false);
                map.put("error", mesList);
            } else 
            {
                map.put("status", true);
                map.put("msg", "添加成功");
            }
            return map;
        }

    场景2:一个Bean ,需要在不同情况下分别做分组验证

    1.依赖:springboot 已经集成

    <dependency>
           <groupId>com.fasterxml.jackson.datatype</groupId>
      <artifactId>jackson-datatype-jsr310</artifactId>
    </dependency>

    2.定义一个bean (验证对象)

    import javax.validation.constraints.NotEmpty;
    import lombok.Getter;
    import lombok.Setter;
    import lombok.ToString;
    @Getter
    @Setter
    @ToString
    public class XiaoMIEntry {
    
        
        @NotEmpty(groups={AgroupMI2.class,AgroupMI.class},message="name can't be  null")
        private String name;
        
        
        private Double  price;
        
        
        @NotEmpty(groups={AgroupMI.class},message="color can't be  null")
        private  String color;
    
    
        public XiaoMIEntry(@NotEmpty(groups = AgroupMI2.class, message = "name can't be  null") String name, Double price,
                @NotEmpty(groups = AgroupMI.class, message = "color can't be  null") String color) {
            super();
            this.name = name;
            this.price = price;
            this.color = color;
        }
    
    
        public XiaoMIEntry() {
            super();
        }
        
    }
    View Code

    3.定义分组(仅仅是一个接口,需要extends javax.validation.groups.Default 仅仅只是标识)

    分组:1:

    import javax.validation.groups.Default;
    
    public interface AgroupMI extends Default{
    
    }

    分组:2:

    import javax.validation.groups.Default;
    
    public interface AgroupMI2 extends Default{
    
    }

    验证方法:工具类;

    /***************************************************************************
     *
     * COPYRIGHT (c) 2004 BY INTEGRATED CONCEPTS INTERNATIONAL LIMITED.
     *
     * ALL RIGHTS RESERVED. NO PART OF THIS TEXT FILE MAY BE REPRODUCED, STORED IN A RETRIEVAL SYSTEM OR
     * COMPUTER SYSTEM, OR TRANSMITTED IN ANY FORM OR BY ANY MEANS, ELECTRONIC, MECHANICAL,
     * PHOTOCOPYING, RECORDING OR OTHERWISE, WITHOUT PRIOR WRITTEN PERMISSION OF INTEGRATED CONCEPTS
     * INTERNATIONAL LIMITED.
     *
     * Integrated Concepts International Limited 11th Broadway 64-52 Lockhart Road Wanchai, Hong Kong
     * Telephone (852) 27788682 Facsimile (852) 27764515
     *
     ***************************************************************************/
    package com.icil.elsa.subscribe.milestone.common.utils;
    
    import java.util.Set;
    
    import javax.validation.ConstraintViolation;
    import javax.validation.Validation;
    import javax.validation.Validator;
    import javax.validation.ValidatorFactory;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    /**
     * 
     * @ClassName:  BeanValidationUtils   
     * @Description:
     * @Author: Sea
     * @Date: 14 Sep 2018 11:24:49 AM     
     * @Copyright: 2018 ICIL All rights reserved.
     */
    public class BeanValidationUtils {
    
      private static final Logger logger = LoggerFactory.getLogger(BeanValidationUtils.class);
      
      
      /**
       * 
       * @param obj
       * @return
       */
      public static String getBeanValidate(Object obj) {
        StringBuilder validationMessage = new StringBuilder();
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();
        Set<ConstraintViolation<Object>> violations = validator.validate(obj);
        for (ConstraintViolation<Object> violation : violations) {
          if(violation.getMessage() != null && !"".equals(violation.getMessage())) {
              validationMessage.append("<p>"+violation.getMessage()+" ;</p>");
              }
          }
        return validationMessage.toString();
      }
      
      
      
      /**
       * 
       * @param obj:需要验证的 bean
       * @param group :需要验证的分组
       * @return
       */
      public static String getBeanValidateByGroup(Object obj,Class<?> group) {
            StringBuilder validationMessage = new StringBuilder();
            ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
            Validator validator = factory.getValidator();
            Set<ConstraintViolation<Object>> violations = validator.validate(obj,group);
            for (ConstraintViolation<Object> violation : violations) {
              if(violation.getMessage() != null && !"".equals(violation.getMessage())) {
                  validationMessage.append("<p>"+violation.getMessage()+" ;</p>");
                  }
              }
            return validationMessage.toString();
          }
      
      
    }
    View Code

    test :

    import org.junit.Test;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.junit.runner.RunWith;
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class ValitionByGrouptest {
    
        
        
        
        @Test
        public void testgroup1() throws Exception {
            
            
            
            XiaoMIEntry xiaoMIEntry = new XiaoMIEntry(null, 1.2, null);
            
            String beanValidateByGroup = BeanValidationUtils.getBeanValidateByGroup(xiaoMIEntry, AgroupMI.class);
            System.out.println("###############");
            System.out.println(beanValidateByGroup);
            System.err.println("######################");
            
            
            
        }
        
        
        @Test
        public void testgroup2() throws Exception {
            
            
            
            XiaoMIEntry xiaoMIEntry = new XiaoMIEntry(null, 1.2, null);
            
            String beanValidateByGroup = BeanValidationUtils.getBeanValidateByGroup(xiaoMIEntry, AgroupMI2.class);
            System.out.println("###############");
            System.out.println(beanValidateByGroup);
            System.err.println("######################");
            
            
            
        }
    View Code
  • 相关阅读:
    禁止MDA对话框的产生 Anny
    how tomcat works(第14章:服务器和服务)
    Python学习笔记2
    how tomcat works(第15章: Digester)
    how tomcat works(第17章: 启动Tomcat)
    how tomcat works(第15章: Digester)
    Python学习笔记2
    how tomcat works(第14章:服务器和服务)
    how tomcat works(第16章: 关闭钩子)
    how tomcat works(第16章: 关闭钩子)
  • 原文地址:https://www.cnblogs.com/lshan/p/10313745.html
Copyright © 2020-2023  润新知