spring校验注解@valid和@validated重点获取校验消息

2023-11-03

spring校验注解@valid和@validated重点获取校验消息

  1. @valid作用范围类,方法参数,成员变量。可以用来做嵌套校验。
  2. @validated作用范围类,方法参数。不可以用来做嵌套校验。可以分组,@valid不可以分组。
  3. 可以做一个全局捕获异常返回给前端校验消息
  4. 使用@valid注解
@ExceptionHandler(value = BindException.class)
    @ResponseStatus(value = HttpStatus.BAD_REQUEST)
    public ObjectRestResponse bindException(BindException e){
        List<String> strings = new ArrayList<>();
        List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
        for (FieldError fieldError : fieldErrors) {
            String defaultMessage = fieldError.getDefaultMessage();
            strings.add(defaultMessage);
        }
        ObjectRestResponse response = new ObjectRestResponse();
        response.setRel(false);
        response.setMsg("参数错误");
        response.setResult(strings);
        return response;
    }
  1. 使用@validated注解
@ExceptionHandler(value = ConstraintViolationException.class)
    @ResponseStatus(value = HttpStatus.BAD_REQUEST)
    public ObjectRestResponse parmeterNotValidException(ConstraintViolationException e){
        String message = e.getConstraintViolations().stream().map(ConstraintViolation::getMessage).collect(Collectors.joining());
        ArrayList<String> strings = new ArrayList<>();
        strings.add(message);
        ObjectRestResponse response = new ObjectRestResponse();
        response.setRel(false);
        response.setMsg("参数错误");
        response.setResult(strings);
        return response;
    }
  1. 使用@notnull @notblank @max等等
@ExceptionHandler(value = BindException.class)
    @ResponseStatus(value = HttpStatus.BAD_REQUEST)
    public ObjectRestResponse bindException(BindException e){
        List<String> strings = new ArrayList<>();
        List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
        for (FieldError fieldError : fieldErrors) {
            String defaultMessage = fieldError.getDefaultMessage();
            strings.add(defaultMessage);
        }
        ObjectRestResponse response = new ObjectRestResponse();
        response.setRel(false);
        response.setMsg("参数错误");
        response.setResult(strings);
        return response;
    }
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    @ResponseStatus(value = HttpStatus.BAD_REQUEST)
    public ObjectRestResponse methodArgumentNotValidException(MethodArgumentNotValidException e){
        List<String> strings = new ArrayList<>();
        List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors();
        for (FieldError fieldError : fieldErrors) {
            String defaultMessage = fieldError.getDefaultMessage();
            strings.add(defaultMessage);
        }
        ObjectRestResponse response = new ObjectRestResponse();
        response.setRel(false);
        response.setMsg("参数错误");
        response.setResult(strings);
        return response;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring校验注解@valid和@validated重点获取校验消息 的相关文章

随机推荐

  • 论文阅读记录: Automatic Image Colorization sig16

    sig论文阅读记录 Let there be Color Joint End to end Learning of Global and Local Image Priorsfor Automatic Image Colorization
  • JSP、servlet运行原理

    一 jsp和servlet的区别 servlet是用Java编写的服务器端程序 其主要功能在于交互式地浏览和修改数据 生成动态Web内容 狭义的Servlet是指Java语言实现的一个接口 广义的Servlet是指任何实现了这个Servle
  • es-5数据同步

    向ES里面添加数据 logstash kabina javaapi restful api 重点介绍一下logstash 是一个数据同步工具 可以动态地将来自不同数据源的数据统一起来 并将数据标准化到其他任何数据源 其实最常见的使用场景是将
  • 思考::战略藐视:RTOS 高级多任务调度器 (***)

    战略藐视 RTOS 高级任务调度器 压力大 将 RTOS 视为操作系统 则似乎有很大的学习心里压力 复杂 耗时 有难度 减压 将它们视为是 某种 高级多任务调度器 来学习 就好了 这样似乎就简单了 心里压力也就小了 或者 将它们视为是 某种
  • 基于Python生成Markdown的标题序号

    import sys import os import time import re headline title sign list 用于判断标题产生环境 titles added number 保存嵌入了编号的标题 用于产生新编号 is
  • Java的内部类

    学习笔记 内部类 内部类访问特点 1 内部类可以直接访问外部类中的成员 2 外部类要访问内部类 必须建立内部类的对象 一般用于类的设计 分析事物时 发现该事物描述中还有事物 而且这个事物还在访问被描述事物的内容 这时就是 还有的事物 定义成
  • iOS进阶_多线程(二.线程间的状态)

    ViewController m 004 NSThread状态 Created by mac on 2018 4 27 Copyright 2018年 mac All rights reserved import ViewControlle
  • TencentOS-tiny 时间管理(十 六)- 时间片轮转机制

    一 时间管理 时间片轮转机制 概述 TencentOS tiny操作系统内核是一个抢占式内核 抢占式内核的特点是 如果最高优先级的任务不放弃CPU 调用tos task delay tos task yeild等主动放权 或者任务间同步通信
  • 深度学习:不平衡的二分类,precise与recall

    在不平衡的二分类问题中 一般数量较少的样本标签为1 precise 预测为正样本中真实为正样本的比例 recall 真实为正样本中预测为正样本的比例 f1 score precise与recall的调和平均 两者中较小值的起决定性作用
  • 配置防火墙,开启80端口、3306端口 & iptables 使用详解

    1 配置防火墙 开启80端口 3306端口 vi etc sysconfig iptables A INPUT m state state NEW m tcp p tcp dport 80 j ACCEPT 允许80端口通过防火墙 A IN
  • GIT常用命令大全——赶紧收藏

    史上最全的GIT常用命令都在这里啦 全是干货 建议收藏起来 反复观看 一 git安装后 指定名称和邮箱 git config global user name Your Name git config global user email e
  • Linux cache介绍及控制

    有关Cache 文件缓存是提升性能的重要手段 毋庸置疑 读缓存 Read caching 在绝大多数情况下是有益无害的 程序可以直接从RAM中读取数据 而写缓存 Write caching 则相对复杂 Linux内核将写磁盘的操作分解成了
  • salt 服务器信息收集,使用saltstack自定义模块获取服务器的信息

    1 查看MASTER的BASE路径 在对应的路径建立 modules文件夹 存放 py的模块 root v72 modules cat etc salt master grep file roots A 5 file roots base
  • c语言 学生成绩信息综合管理系统(包含文件写入读出,链表,冒泡排序....)

    include
  • Kendo UI开发教程(27): 移动应用开发简介

    Kendo UI 支持开发Web应用 前面介绍的SPA 也支持开发移动应用 至于使用 HTML5 JavaScript CSS开发移动是不是一个好的选择不在本文的讨论之中 Kendo UI Mobile提供了一种快速开发跨手机平台的方法 K
  • linux dev/zero,/dev/zero是什么意思

    hsvea 于 2009 10 16 10 35 03发表 dev zero 是一个输入设备 你可你用它来初始化文件 dev zero 该设备无穷尽地提供0 可以使用任何你需要的数目 设备提供的要多的多 他可以用于向设备或文件写入字符串0
  • Pycharm 安装第三方库报错及解决方案——no such option: --build-dir

    Pycharm 安装第三方库报错及解决方案 no such option build dir Pycharm 安装第三方库报错及解决方案 no such option build dir 最近在学习路径规划相关内容 在运行GitHub上下载
  • 数据结构知识整理

    基于严蔚敏及吴伟民编著的清华大学C语言版教材并结合网上相关资料整理 http www docin com p 2027739005 html 第一章 绪论 1 数据结构 是一门研究非数值计算的程序设计问题中计算机的操作对象以及他们之间的关系
  • varifocal loss(VFL)介绍

    文章目录 一 论文链接 二 公式理解 代码 一 论文链接 https arxiv org pdf 2008 13367 pdf 二 公式理解 简单说明下 这里的IACS是IoU aware classification score的缩写 V
  • spring校验注解@valid和@validated重点获取校验消息

    spring校验注解 valid和 validated重点获取校验消息 valid作用范围类 方法参数 成员变量 可以用来做嵌套校验 validated作用范围类 方法参数 不可以用来做嵌套校验 可以分组 valid不可以分组 可以做一个全