如何在RESTful Spring MVC控制器中处理验证错误和异常?

IT小君   2023-09-16T19:36:50

例如,如何处理此控制器动作方法中的验证错误和可能的异常:

@RequestMapping(method = POST)
@ResponseBody
public FooDto create(@Valid FooDTO fooDto, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        return null; // 在这里做什么?
                     // 如何让客户端知道出现了问题?
    } else {
        fooDao.insertFoo(fooDto); // 如果在这里抛出异常怎么办?
                                  // 向客户端发送什么?
        return fooDto;
    }
}
评论(2)
IT小君

如果发生错误,请抛出异常,然后使用@ExceptionHandler注释另一个方法来处理异常并呈现适当的响应。

2023-09-16T19:36:56   回复
IT小君
@RequestMapping(method = POST)
@ResponseBody
public FooDto create(@Valid FooDTO fooDto) {
//在这里执行我的业务逻辑
    return fooDto;

}

创建一个异常处理器:

@ExceptionHandler( MethodArgumentNotValidException.class)
@ResponseBody
@ResponseStatus(value = org.springframework.http.HttpStatus.BAD_REQUEST)
protected CustomExceptionResponse handleDMSRESTException(MethodArgumentNotValidException objException)
{

    return formatException(objException);
}

我不确定我是否在遵循正确的方法。如果您能告诉我您为此问题做了什么,我将不胜感激。

2023-09-16T19:37:10   回复