gpt4 book ai didi

java - Spring MVC 中的数据绑定(bind)错误处理

转载 作者:搜寻专家 更新时间:2023-11-01 02:50:43 27 4
gpt4 key购买 nike

我对 Spring MVC 中的数据绑定(bind)有疑问。

我有一个 Controller ,它以@RequestBody 的形式接受 JSON 请求。我已完成所有 JSR 303 验证,而且效果非常好。

  • JSON 请求

    public class TestJSONRequest {

    @Size(min=10,message="{invalid.demo.size}")
    String demo;

    int code;
    }
  • 控制者

    @Controller
    @RequestMapping("/test")
    public class TestController {

    public void testEntry(@RequestBody TestJSONRequest jsonRequest,ModelMap map)

    Set<ConstraintViolation<TestJSONRequest>> violationList = validator.val(jsonRequest);
    ....
    ....
    TestJSONResponse response = // Do complex Logic.
    modelMap.addattribute("TestJSONResponse",response);
    }
    }

但是一旦传入的 JSON 数据绑定(bind)到 Request 对象,JSR 303 验证就会启动。

如果我在输入 JSON 请求的 code 字段中发送 ab,绑定(bind)本身就会失败。

我该如何处理?

我想捕获那些数据绑定(bind)错误并在我的 Controller 中进行某种通用错误处理。

你能帮我解决这个问题吗?

P.S - 我正在使用 Spring 3.0.3

最佳答案

根据当前Spring documentation (V3.1) :

与可使用 BindingResult 来检查错误的 @ModelAttribute 参数不同,@RequestBody 验证错误总是导致引发 MethodArgumentNotValidException。异常在 DefaultHandlerExceptionResolver 中处理,它向客户端发送回 400 错误。

现在您可以通过创建一个新方法来告诉 Spring 您想要处理这个问题,如下所示:

@ExceptionHandler(MethodArgumentNotValidException.class)
public String handleValidation(MethodArgumentNotValidException e, ModelMap map) {
List<ObjectError> errors = e.getBindingResult() .getAllErrors();
// your code here...
return "path/to/your/view";
}

最后,阅读有关 @ExceptionHandler 的 Spring 文档。那里很可能有一些有用的信息。

关于java - Spring MVC 中的数据绑定(bind)错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11730567/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com