首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从MethodArgumentNotValidException类中提取字段名和错误信息?

从MethodArgumentNotValidException类中提取字段名和错误信息的方法如下:

  1. 首先,需要获取MethodArgumentNotValidException对象的BindingResult,可以通过getMethodArgumentNotValidException().getBindingResult()方法来获取。
  2. 然后,可以通过BindingResult对象的getFieldErrors()方法获取所有的字段错误信息列表。
  3. 遍历字段错误信息列表,可以通过getField()方法获取字段名,通过getDefaultMessage()方法获取错误信息。

下面是一个示例代码:

代码语言:txt
复制
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;

public class ExampleController {

    public void handleValidationException(MethodArgumentNotValidException ex) {
        BindingResult bindingResult = ex.getBindingResult();
        for (FieldError fieldError : bindingResult.getFieldErrors()) {
            String fieldName = fieldError.getField();
            String errorMessage = fieldError.getDefaultMessage();
            // 在这里可以对字段名和错误信息进行处理
            System.out.println("字段名:" + fieldName);
            System.out.println("错误信息:" + errorMessage);
        }
    }
}

这样,你就可以从MethodArgumentNotValidException类中提取字段名和错误信息了。

推荐的腾讯云相关产品:腾讯云Serverless云函数(https://cloud.tencent.com/product/scf)可以用于处理云原生应用中的函数计算,提供了弹性、高可用、低成本的云计算能力。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【项目实践】后端接口统一规范的同时,如何优雅得扩展规范?

我天真的以为这样就能满足所有应用场景了,直到我碰到了一位网友的提问: 想请问下如果我检验的每个参数对应不同的错误信息,即code,message都不同 这样该如何处理呢?...我先来演示一下我所说的这种极为麻烦的做法: 手动捕捉异常对象 因为BindingResult对象里封装了很多信息,我们可以拿到校验错误的字段名,拿到了字段名后再响应对应的错误码错误信息。...自定义注解 如果validation校验失败了,我们可以拿到字段对象并能够获取字段的注解信息,那么只要我们为每个字段带上注解,注解中带上我们自定义的错误码code错误信息msg,这样就能方便的返回响应体啦...可以看到,只要加了我们自定义的注解,参数校验失败了就会返回注解的错误码code错误信息msg。这种做法相比前两种做法带来了以下好处: 方便。之前一大堆手动判断代码,到现在一个注解搞定 复用性强。...比如,我们可以让注解直接加在整个上,让某个都参数用一个错误码;也可以让注解的值设置为枚举,这样能够进一步的统一规范…… 绕过数据统一响应 上面演示了如何让错误码变得灵活,我们继续进一步扩展。

89921

如何使用DataSurgeon快速文本中提取IP、邮件、哈希信用卡等敏感数据

关于DataSurgeon  DataSurgeon是一款多功能的数据提取工具,该工具专为网络安全事件应急响应、渗透测试CTF挑战而设计。...在该工具的帮助下,广大研究人员可以快速文本内容中提取出各种类型的敏感数据,其中包括电子邮件、电话号码、哈希、信用卡、URL、IP地址、MAC地址、SRV DNS记录等等!...该工具基于Rust语言开发,当前版本的DataSurgeon支持在Windows、LinuxmacOS操作系统上使用。  ...2、文件; 3、电话号码; 4、信用卡号; 5、Google API密钥ID; 6、社保号; 7、AWS密钥; 8、比特币钱包地址; 9、URL地址; 10、IPv4IPv6...$ wget -qO - https://www.stackoverflow.com | ds -F --clean | uniq (向右滑动,查看更多) 输出文件提取MAC地址

76220

SpringBoot实现通用的接口参数校验,注解实战

String name; // 姓名 private Integer age; // 年龄 } 假设存在这样一个业务:用户注册时需要填写姓名年龄,用户登陆时只需要填写姓名就可以了。...=aaa", "title<10"}) 默认的错误信息会返回字段,错误原因调用的方法,例如: updateUserId must not null while calling testValid id...使用 spring-boot中如何使用 AOP这里不再赘述,主要介绍 AOP中的核心代码。...ElementType.TYPE, ElementType.METHOD}) @Retention(RUNTIME) public @interface Check { // 字段校验规则,格式:字段名...+校验规则+冒号+错误信息,例如:id<10:ID必须少于10 String[] value(); } 核心代码 通过切面拦截加上了 @Check注解的接口方法,在方法执行前,执行参数校验,如果存在错误信息

44110

手把手教你利用Spring Boot实现通用的接口参数校验

本文介绍基于 Spring Boot JDK8 编写一个 AOP,结合自定义注解实现通用的接口参数校验。 ?...=aaa", "title<10"}) 默认的错误信息会返回字段,错误原因调用的方法,例如: updateUserId must not null while calling testValid id...❞ 使用 spring-boot 中如何使用 AOP 这里不再赘述,主要介绍 AOP 中的核心代码。...ElementType.TYPE, ElementType.METHOD}) @Retention(RUNTIME) public @interface Check { // 字段校验规则,格式:字段名...+校验规则+冒号+错误信息,例如:id<10:ID必须少于10 String[] value(); } 核心代码 通过切面拦截加上了 @Check 注解的接口方法,在方法执行前,执行参数校验,如果存在错误信息

76040

使用原生 JavaScript 手写一个高效的表单验证系统

密码确认密码必须匹配。 案例展示 以下是我们将实现的表单页面截图: 如何实现 我们将使用HTML、CSSJavaScript来实现这个表单验证功能。首先,让我们看看HTML代码: <!...表单样式:定义表单的容器、标题、表单控件按钮的样式。 表单验证样式:使用CSS显示输入框的成功错误状态。...== input2.value) { showError(input2, 'Passwords do not match'); } } // 获取字段名称 function getFieldName...获取字段名称:getFieldName函数将输入字段的ID转换为首字母大写的字段名称。...事件监听:理解如何使用事件监听器处理表单提交事件。 动态样式:通过JavaScript动态添加移除CSS,实现表单的错误成功提示。 结束 希望这篇文章对你有所帮助!

12110

springboot validated注解数据校验 异常处理

我们这里登录校验开始说明 我们可以把它用在这里User实体的接收参数上。 User是我们的实体,我们用这个实体修饰的参数来接收前端传来的数据。...当然你这里要保证封装的字段实体字段一致,当然你也可以进行其它处理。 然后就去实体进行一个几个操作。 我们来举例两个,当然这个注解功能还是非常方便的。...我们加了校验注解后,如何去配合使用呢? 我们可以去做一个全局异常捕获的处理,当然怎么样封装我们可以自己去做。...uri:{},错误信息:{}", req.getRequestURI(), paramErrorMsg.toString()); //这里我用R_对象去封装返回了 return...ok,后面追加一篇登录注册校验的逻辑,我们用注解校验前端js校验两种方式,具体都写下来来进行对比。本篇就到这里。

49120

SpringBoot三招组合拳,手把手教你打出优雅的后端接口

如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”标准,但一个优秀的后端接口一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范!...(MethodArgumentNotValidException e) { // 异常对象中拿到ObjectError对象 ObjectError objectError = e.getBindingResult...现在全局异常处理自定义异常已经弄好了,不知道大家有没有发现一个问题,就是当我们抛出自定义异常的时候全局异常处理只响应了异常中的错误信息msg给前端,并没有将错误代码code返回。...自定义统一响应体 统一数据响应第一步肯定要做的就是我们自己自定义一个响应体,无论后台是运行正常还是发生异常,响应给前端的数据格式是不变的!那么如何定义响应体呢?...关于异常的设计:如何更优雅的设计异常 可以参考我们自定义异常,也来一个响应信息代码code响应信息说明msg: @Getter public class ResultVO { /** * 状态码

77130

SpringBoot 三招组合拳,手把手教你打出优雅的后端接口

如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”标准,但一个优秀的后端接口一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范!...(MethodArgumentNotValidException e) { // 异常对象中拿到ObjectError对象 ObjectError objectError = e.getBindingResult...现在全局异常处理自定义异常已经弄好了,不知道大家有没有发现一个问题,就是当我们抛出自定义异常的时候,全局异常处理只响应了异常中的错误信息 msg 给前端,并没有将错误代码 code 返回。...自定义统一响应体 统一数据响应,第一步肯定要做的就是我们自己自定义一个响应体。无论后台是运行正常还是发生异常,响应给前端的数据格式是不变的!那么如何定义响应体呢?...响应码枚举 要规范响应体中的响应码响应信息用枚举简直再恰当不过了,我们现在就来创建一个响应码枚举: @Getter public enum ResultCode { SUCCESS(1000

50820

@NotNull 等注解的简单使用

当然不,这时候就要用到全局异常了 起一个 @ControllerAdvice public class ControllerException { @ResponseBody @...ExceptionHandler(MethodArgumentNotValidException.class) public Object handleValidException(MethodArgumentNotValidException...验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格 @Email 验证注解的元素值是Email,也可以通过正则表达式flag...指定自定义的email格式 二次更新:所有的Controller 都写这样的代码就要封装成异常 import org.springframework.web.bind.MethodArgumentNotValidException...) public Object handleValidException(MethodArgumentNotValidException e) { //日志记录错误信息

1K50

Controller层代码这么写,简洁又优雅!

统一包装处理 Spring 中提供了一个 ResponseBodyAdvice ,能帮助我们实现上述需求: public interface ResponseBodyAdvice {     boolean...对 @PathVariable @RequestParam 参数进行校验需要在入参声明约束的注解。 如果校验失败,会抛出 MethodArgumentNotValidException 异常。...RequestResponseBodyMethodProcessor,这个有两个作用(实际上可以名字上得到一点启发) 用于解析 @RequestBody 标注的参数 处理 @ResponseBody...自定义校验规则需要做两件事情: 自定义注解,定义错误信息一些其他需要的内容 注解校验器,定义判定规则 //自定义注解 @Target({ElementType.METHOD, ElementType.FIELD...可以发现 Controller 的代码变得非常简洁,可以很清楚地知道每一个参数、每一个 DTO 的校验规则,可以很明确地看到每一个 Controller 方法返回的是什么数据,也可以方便每一个异常应该如何进行反馈

32920

初探Springboot 参数校验

通常来说,这些关于字段的判断应该业务逻辑分开来,可能我们想到的第一个解决方案就是通过AOP,这也能解决我们的问题的。...这种验证机制是运行时的,也就是说,在验证之后,如果数据不符合指定的约束,那么会立即返回错误信息。 总之,JSR-303 为Java应用程序提供了一种方便、灵活且强大的数据验证方式。...这些注解主要用于对实体的属性进行约束,以确保数据的有效性。 在这里插入图片描述 以下是一些常用的JSR-303 validation注解: @NotNull:用于对象的校验,确保对象不为null。...,为了省事就把字段名验证失败提示语拼接到一起了。...总结 Springboot 参数校验在实际工作中用处非常大,本文只是简单介绍一下有哪些注解简单使用,后续会对Springboot参数校验做一个详细的介绍使用,感兴趣可以关注一下。

18511

Controller层代码这么写,简洁又优雅!

统一返回结构后,在 Controller 中就可以使用了,但是每一个 Controller 都写这么一段最终封装的逻辑,这些都是很重复的工作,所以还要继续想办法进一步处理统一返回结构 统一包装处理 Spring 中提供了一个...那这样就可以把统一包装的工作放到这个里面。... @RequestParam 参数进行校验需要在入参声明约束的注解 如果校验失败,会抛出 MethodArgumentNotValidException 异常 @RestController(value...RequestResponseBodyMethodProcessor ,这个有两个作用(实际上可以名字上得到一点启发) 用于解析 @RequestBody 标注的参数 处理 @ResponseBody...,也可以自定义校验规则 自定义校验规则需要做两件事情 自定义注解,定义错误信息一些其他需要的内容 注解校验器,定义判定规则 //自定义注解 @Target({ElementType.METHOD,

76520

SpringBoot中的异常处理与参数校验

兄弟们好,这次来跟老铁交流两个问题,异常参数校验,在说参数校验之前我们先来说异常处理吧,因为后面参数的校验会牵扯到异常处理这块的内容。...不会走globalException更大的异常处理。 这样处理之后,我们就不需要在项目中去写那么多的try了,是不是方便了很多。...如果大家非要把详细的错误信息打出来,要看到到底是哪个参数校验不通过,也可以通过下面的方式将具体的参数错误信息打印出来。输出的错误结果其实就是上面message里面的内容。...) public Object methodArgumentNotValidException(MethodArgumentNotValidException ex) { BindingResult...System.out.println(e.getDefaultMessage())); return "请求参数错误-json"; } 最后的话 那么到这里,我们本篇文章就结束了,主要介绍了两部分内容,异常的处理参数的校验

88720

SpringBoot中的异常处理参数校验

兄弟们好,这次来跟老铁交流两个问题,异常参数校验,在说参数校验之前我们先来说异常处理吧,因为后面参数的校验会牵扯到异常处理这块的内容。...不会走globalException更大的异常处理。 这样处理之后,我们就不需要在项目中去写那么多的try了,是不是方便了很多。...如果大家非要把详细的错误信息打出来,要看到到底是哪个参数校验不通过,也可以通过下面的方式将具体的参数错误信息打印出来。输出的错误结果其实就是上面message里面的内容。...) public Object methodArgumentNotValidException(MethodArgumentNotValidException ex) { BindingResult...System.out.println(e.getDefaultMessage())); return "请求参数错误-json"; } 最后的话 那么到这里,我们本篇文章就结束了,主要介绍了两部分内容,异常的处理参数的校验

75930

JDK21更新内容:RedordPatterns

记录类型是一种新的声明形式,用于定义不可变的数据对象。而 Record Patterns 则提供了一种简洁的方式来进行模式匹配,并且可以方便地记录类型中提取字段值。 2....Record Patterns 的实现原理 Record Patterns 的实现原理主要涉及两个方面:记录类型模式匹配。 记录类型 记录类型是一种新的声明形式,通过 record 关键字来定义。...Record Patterns 的使用示例 下面是一个简单的示例,展示了如何使用 Record Patterns 进行模式匹配: record Person(String name, int age) ...记录类型的构造函数参数段名称要一致,否则会导致编译错误。...总结 Record Patterns 是 Java 16 引入的一个新特性,它提供了一种简洁、清晰的方式来进行模式匹配,并且可以方便地记录类型中提取字段值。

24720
领券