【问题标题】:How to override the @NotNull HTTP Status Code from 400如何从 400 覆盖 @NotNull HTTP 状态代码
【发布时间】:2022-01-20 03:48:31
【问题描述】:

我正在创建一个新的 SpringBoot API,并且我的模型中有一些强制参数。例如

@NotNull(message="Name is Mandatory")
public String Name

如果没有提供名称,它当前会返回状态代码 400 Bad Request 以及定义的消息。有没有办法将状态码从 400 覆盖到 404 Not found?

【问题讨论】:

  • 尝试使用ControllerAdvice处理抛出的异常并返回404响应
  • 我认为你可以让它抛出这样的异常并在你的 @ExceptionHandler 方法在你的 RestControllerAdvice 文件中处理它,当它的消息是你所期望的时候

标签: java spring-boot api


【解决方案1】:

下面是显示自定义消息的几件事:

@NotNull(message = "error.title.notnull")
public String Name

之后我们可以在src/main/resources/messages中创建message.properties来显示错误信息:

error.title.notnull= Name is Mandatory

之后你需要在main类中制作MessageSource bean:

@Bean(name = "messageSource")
public ReloadableResourceBundleMessageSource messageSource() {
  ReloadableResourceBundleMessageSource messageBundle = new ReloadableResourceBundleMessageSource();
  messageBundle.setBasename("classpath:messages/message");   // Path of message.properties
  messageBundle.setDefaultEncoding("UTF-8");
  return messageBundle;
}

这是来自message.properties的获取消息。

【讨论】:

    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 2012-09-17
    相关资源
    最近更新 更多