当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot中正确覆盖handleMethodArgumentNotValid

岳涵煦
2023-03-14

我正在尝试重写HandleMethodArgumentNotValid方法。但我还是发现了错误:

@Order(Ordered.HIGHEST_PRECEDENCE)
@RestControllerAdvice
public class CustomExceptionHandler extends ResponseEntityExceptionHandler {

    @Override
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest webRequest) {
        String message = errorMessageBuilder(ex);
        return handleExceptionInternal(ex, message, new HttpHeaders(), HttpStatus.UNPROCESSABLE_ENTITY, webRequest);
    }
}

马塞尔

共有1个答案

刘翔宇
2023-03-14

如果您想创建自己的响应,那么请尝试使用下面的代码。

@ControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex) {
        Map<String, Object> body = new HashMap<>();
        body.put("error", ex);
        return new ResponseEntity<>(body, HttpStatus.UNPROCESSABLE_ENTITY);
    }
}

您可以将映射更改为自定义对象,并设置所需的错误信息。我希望它能奏效。

 类似资料:
  • 问题内容: 我需要方法方面的帮助,这非常令人讨厌。我尝试在线查找,因为那是一个正在搞砸的地方,即使在那里,它也“找不到2号Kid构造函数”,我什至会做其他事情,但它不起作用。好了,所以这是我的代码: 好的,所以我上面的toString(我知道,我的第三个参数已关闭,应该是String)已关闭。如果我在第三件事中硬编码一个值,它就会变成麻烦,并说找不到它(上面)。那么如何获取日期并将其拆分呢? 调用

  • 问题内容: 我需要在我的没有超类的对象中实现一个深层克隆。 处理超类(即Object)引发的检查的最佳方法是什么? 一位同事建议我按以下方式处理: 对于我来说,这似乎是一个不错的解决方案,但我想将其扔给StackOverflow社区,以查看是否有我可以提供的其他见解。谢谢! 问题答案: 您绝对必须使用吗?大多数人都同意是坏的。 Josh Bloch谈设计-复制构造函数与克隆 如果您已经阅读了我书中

  • 我应该使用哪个保险套件?是Eclemma还是Jacoco? 如何使用覆盖包运行该工具?我应该把它添加到build.xml文件中吗?我应该把它添加到命令行吗? 我对Java中覆盖的整个概念有点困惑。在Python和Perl等动态语言中,我只需使用coverage模块执行代码,该模块创建coverage报告。 我们用来执行out工具的命令: 我很难理解和。我试图覆盖的文件是。在的某个内部文件夹中有,在

  • 在spring boot中@RequestBody内容到达控制器之前,我如何覆盖它? > 此外,我还搜索了Request estBodyAdviceAdapter。 有几个链接对spring boot不起作用。 如何多次读取request.getInputStream() 如何在Spring引导到达控制器之前修改请求正文 现在,我可以将输入流读入字符串中,进行一些修改并设置回控制器的输入流吗?

  • 我有一个内部application.yml配置文件,位于classpath上的resources文件夹中。 我有一个外部配置文件:/home/username/config.properties,它覆盖一些字段以在服务器上下文中运行。 我如何实现这个预期的结果? 编辑:这个问题只发生在Linux上。当我在Windows10机器上用覆盖的配置文件运行它时,它可以正常工作。

  • 问题内容: 我目前在glassfish v2.1中使用基于身份的身份验证来登录用户,并且工作正常。我想切换到该网站,并希望能够获得最初请求的URL(即在重定向到登录页面之前),并在我的程序化登录代码中使用它,以便在身份验证后将用户重定向回请求的页面。 我已经看过源代码-在我的情况下,它是(catalina代码库),它将初始请求保存在会话中的对象中,但是该会话不是,因此没有直接方法可以访问它。 还是