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

1.依赖:springboot 已经集成

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

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

  1. import javax.validation.constraints.NotEmpty;
  2. import lombok.Getter;
  3. import lombok.Setter;
  4. import lombok.ToString;
  5. @Getter
  6. @Setter
  7. @ToString
  8. public class XiaoMIEntry {
  9.  
  10. @NotEmpty(groups={AgroupMI2.class,AgroupMI.class},message="name can't be null")
  11. private String name;
  12.  
  13. private Double price;
  14.  
  15. @NotEmpty(groups={AgroupMI.class},message="color can't be null")
  16. private String color;
  17.  
  18. public XiaoMIEntry(@NotEmpty(groups = AgroupMI2.class, message = "name can't be null") String name, Double price,
  19. @NotEmpty(groups = AgroupMI.class, message = "color can't be null") String color) {
  20. super();
  21. this.name = name;
  22. this.price = price;
  23. this.color = color;
  24. }
  25.  
  26. public XiaoMIEntry() {
  27. super();
  28. }
  29.  
  30. }

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

分组:1:

  1. import javax.validation.groups.Default;
  2.  
  3. public interface AgroupMI extends Default{
  4.  
  5. }

分组:2:

  1. import javax.validation.groups.Default;
  2.  
  3. public interface AgroupMI2 extends Default{
  4.  
  5. }

验证方法:工具类;

  1. /***************************************************************************
  2. *
  3. * COPYRIGHT (c) 2004 BY INTEGRATED CONCEPTS INTERNATIONAL LIMITED.
  4. *
  5. * ALL RIGHTS RESERVED. NO PART OF THIS TEXT FILE MAY BE REPRODUCED, STORED IN A RETRIEVAL SYSTEM OR
  6. * COMPUTER SYSTEM, OR TRANSMITTED IN ANY FORM OR BY ANY MEANS, ELECTRONIC, MECHANICAL,
  7. * PHOTOCOPYING, RECORDING OR OTHERWISE, WITHOUT PRIOR WRITTEN PERMISSION OF INTEGRATED CONCEPTS
  8. * INTERNATIONAL LIMITED.
  9. *
  10. * Integrated Concepts International Limited 11th Broadway 64-52 Lockhart Road Wanchai, Hong Kong
  11. * Telephone (852) 27788682 Facsimile (852) 27764515
  12. *
  13. ***************************************************************************/
  14. package com.icil.elsa.subscribe.milestone.common.utils;
  15.  
  16. import java.util.Set;
  17.  
  18. import javax.validation.ConstraintViolation;
  19. import javax.validation.Validation;
  20. import javax.validation.Validator;
  21. import javax.validation.ValidatorFactory;
  22.  
  23. import org.slf4j.Logger;
  24. import org.slf4j.LoggerFactory;
  25. /**
  26. *
  27. * @ClassName: BeanValidationUtils
  28. * @Description:
  29. * @Author: Sea
  30. * @Date: 14 Sep 2018 11:24:49 AM
  31. * @Copyright: 2018 ICIL All rights reserved.
  32. */
  33. public class BeanValidationUtils {
  34.  
  35. private static final Logger logger = LoggerFactory.getLogger(BeanValidationUtils.class);
  36.  
  37. /**
  38. *
  39. * @param obj
  40. * @return
  41. */
  42. public static String getBeanValidate(Object obj) {
  43. StringBuilder validationMessage = new StringBuilder();
  44. ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
  45. Validator validator = factory.getValidator();
  46. Set<ConstraintViolation<Object>> violations = validator.validate(obj);
  47. for (ConstraintViolation<Object> violation : violations) {
  48. if(violation.getMessage() != null && !"".equals(violation.getMessage())) {
  49. validationMessage.append("<p>"+violation.getMessage()+" ;</p>");
  50. }
  51. }
  52. return validationMessage.toString();
  53. }
  54.  
  55. /**
  56. *
  57. * @param obj:需要验证的 bean
  58. * @param group :需要验证的分组
  59. * @return
  60. */
  61. public static String getBeanValidateByGroup(Object obj,Class<?> group) {
  62. StringBuilder validationMessage = new StringBuilder();
  63. ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
  64. Validator validator = factory.getValidator();
  65. Set<ConstraintViolation<Object>> violations = validator.validate(obj,group);
  66. for (ConstraintViolation<Object> violation : violations) {
  67. if(violation.getMessage() != null && !"".equals(violation.getMessage())) {
  68. validationMessage.append("<p>"+violation.getMessage()+" ;</p>");
  69. }
  70. }
  71. return validationMessage.toString();
  72. }
  73.  
  74. }

test :

  1. import org.junit.Test;
  2. import org.springframework.boot.test.context.SpringBootTest;
  3. import org.springframework.test.context.junit4.SpringRunner;
  4. import org.junit.runner.RunWith;
  5. @RunWith(SpringRunner.class)
  6. @SpringBootTest
  7. public class ValitionByGrouptest {
  8.  
  9. @Test
  10. public void testgroup1() throws Exception {
  11.  
  12. XiaoMIEntry xiaoMIEntry = new XiaoMIEntry(null, 1.2, null);
  13.  
  14. String beanValidateByGroup = BeanValidationUtils.getBeanValidateByGroup(xiaoMIEntry, AgroupMI.class);
  15. System.out.println("###############");
  16. System.out.println(beanValidateByGroup);
  17. System.err.println("######################");
  18.  
  19. }
  20.  
  21. @Test
  22. public void testgroup2() throws Exception {
  23.  
  24. XiaoMIEntry xiaoMIEntry = new XiaoMIEntry(null, 1.2, null);
  25.  
  26. String beanValidateByGroup = BeanValidationUtils.getBeanValidateByGroup(xiaoMIEntry, AgroupMI2.class);
  27. System.out.println("###############");
  28. System.out.println(beanValidateByGroup);
  29. System.err.println("######################");
  30.  
  31. }

JSR303 分組数据验证的使用的更多相关文章

  1. JSR303中的来验证数据信息

    spring mvc之实现简单的用户管理三 博客分类: spring spring mvc spring mvc dispatcherServlet springspring mvcbean vali ...

  2. SpringMVC配置数据验证(JSR-303)

    这篇文章已经过时了. 请参考比较合适的前后端交互方式. 1.pom.xml中追加hibernate-validator 2.在dto类的域上追加JSR-303的注解 public class Data ...

  3. MVC 数据验证【转】

    [转自]http://www.cnblogs.com/dozer/archive/2010/04/12/MVC-DataAnnotations.html 作者Dozer 今天在这里给大家介绍一下MVC ...

  4. SpringMVC学习系列(6) 之 数据验证

    在系列(4).(5)中我们展示了如何绑定数据,绑定完数据之后如何确保我们得到的数据的正确性?这就是我们本篇要说的内容 —> 数据验证. 这里我们采用Hibernate-validator来进行验 ...

  5. 【Win10】使用 ValidationAttribute 实现数据验证

    WPF 中数据验证的方式多种多样,这里就不说了.但是,在 Windows Phone 8.1 Runtime 中,要实现数据验证,只能靠最基础的手动编写条件判断代码来实现.如果用过 ASP.NET M ...

  6. SpringMVC数据验证

    SpringMVC数据验证——第七章 注解式控制器的数据验证.类型转换及格式化——跟着开涛学SpringMVC 资源来自:http://jinnianshilongnian.iteye.com/blo ...

  7. MVC数据验证

    深入浅出 MVC 数据验证 2.0 [附演示源码] 今天在这里给大家介绍一下MVC的数据验证框架. 在1.0版中,很多朋友提出了怎么使用客户端验证,今天找了一些资料,发现了客户端验证的方法. 1.MV ...

  8. spring(7)--注解式控制器的数据验证、类型转换及格式化

    7.1.简介 在编写可视化界面项目时,我们通常需要对数据进行类型转换.验证及格式化. 一.在Spring3之前,我们使用如下架构进行类型转换.验证及格式化: 流程: ①:类型转换:首先调用Proper ...

  9. 【转】ASP.NET MVC 数据验证及相关内容

    原文地址:http://www.jb51.net/article/56713.htm 一.数据验证 数据验证的步骤在模型类中添加与验证相关的特性标记在客户端导入与验证相关的js文件和css文件使用与验 ...

随机推荐

  1. <亲测>阿里云centos7 挂载数据盘配置

    阿里云centos7 挂载数据盘配置 2018年07月17日 15:13:53 阅读数:235更多 个人分类: linux阿里云ECS数据盘挂载   查看磁盘情况 fdisk -l  其中/dev/v ...

  2. a:hover应用精粹

    原本想把题目叫做“纯CSS相册2”的,但在实现过程中试验了许多东西,干脆全部写出来分享了.大家知道,能兼容IE6的具有动态切换能力的CSS属性也只有hover伪类了,但hover伪类在IE仅对链接生效 ...

  3. JGit与远程仓库链接使用的两种验证方式(ssh和https)

    JGit是使用JAVA的API来操控Git仓库的库,由Eclipse公司维护.他提供的API分成两个层次,底层命令和高层命令.底层API是直接作用于低级的仓库对象,高层的API是一个面向普通用户级别功 ...

  4. webpack学习总结(一)

    * webpack安装 1. 安装最新node,node自带npm包管理器: 2. 全局模式安装webpack(只有将webpack在全局模式下安装才能在命令行直接通过webpack执行命令) $np ...

  5. C#批量更新mongodb符合条件的数据

    默认情况下只会更新匹配的第一条 jingjiaanalyurl.Update(Query.EQ("auid", jingjiaitem.id), Update.Set(" ...

  6. Flume 安装和配置

    安装步骤 1.安装jdk,1.6版本以上 2.上传flume的安装包 3.解压安装 4.在conf目录下,创建一个配置文件,比如:template.conf(名字可以不固定,后缀也可以不固定) 5.配 ...

  7. Java学习---异常处理

    import java.util.Scanner; public class MyExceptionTest { public static void check(Square A) throws W ...

  8. Java-Runoob-高级教程-实例-方法:04. Java 实例 – 斐波那契数列

    ylbtech-Java-Runoob-高级教程-实例-方法:04. Java 实例 – 斐波那契数列 1.返回顶部 1. Java 实例 - 斐波那契数列  Java 实例 斐波那契数列指的是这样一 ...

  9. opengl 入门浅学(一)

    因为要做图形学的实验,又是要以OPENGL为基础,所以就稍微在网上查了一些资料. 我是带着目的去学习的,所以就没有打基础之类的学很深,浅尝. 今天试着搭简单框架,画出一个图形.大神请出门左转. #in ...

  10. [转][C#]单例模式之懒加载

    private static ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().Decla ...