spring - Spring ConversionFailedException 错误 HTTP 状态的自定义

标签 spring spring-mvc parameters enums http-status-codes

我有一个枚举类:

class enum Type {
   LOCAL, REMOTE
}

我有一个接受枚举作为 GET 参数的 API
@RequestMapping(method = RequestMethod.GET, location="item", params = "type")
public Item[] get(Type type) {
...

当客户端使用有效值调用 API 时,例如 GET /item?type=LOCALGET /item?type=REMOTE它工作正常。如果客户端为 type 提供无效值,例如GET /item?type=INVALID_TYPE ,然后 Spring 生成 500 Internal Server Error .我想把它变成400 Bad Request验证错误,可能会为客户端添加有用的信息。我更喜欢重用内置的类型转换器,因为它工作得很好,只是想以最少的更改更改 HTTP 抛出的错误类型。

最佳答案

我相信,如果您将正确的异常(exception)添加到 @ControllerAdvice ,您可以自定义响应。在这种情况下,我发现 MethodArgumentTypeMismatchException是有问题的那个。

@ExceptionHandler(MethodArgumentTypeMismatchException.class)
public void methodArgumentTypeMismatchException(final HttpServletResponse response) throws IOException {
    response.sendError(BAD_REQUEST.value());
}

关于spring - Spring ConversionFailedException 错误 HTTP 状态的自定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35665024/

相关文章:

java - 为什么我的实体在 JPA 中持久化后仍然保持分离状态?

java - Spring websocket - 如何获取 session 数

java - Spring文件以混合形式上传

javascript - 传递 JavaScript 函数而不执行

C# MySQL 参数不起作用

sql-server - SSRS 参数 - 来自查询的值(并行)

java - Spring 和 MappingJackson2HttpMessageConverter 和 registerModule

javascript - 在 Controller 类中实现后退按钮

java - 为什么我的网址 localhost :8080////ProjectCtxt/mvc/template works?

java - 信息 : No Spring WebApplicationInitializer types detected on classpath