【发布时间】:2018-03-20 04:48:49
【问题描述】:
在@ControllerAdvice 类中,我只想获取请求正文。我不知道比在 @ModelAttribute 方法中处理它并将 @RequestBody 值设置为道具更好。所以,这里的问题是当我打开@RequestBody 时它仍然按预期获得请求正文,但之后它会抛出 HttpMessageNotReadableException。 有人可以告诉我原因并有解决问题的想法。这对我来说真的很重要。
@ControllerAdvice
public class CustomRestExceptionHandler extends ResponseEntityExceptionHandler
{
public CustomRestExceptionHandler() {
super();
}
private Object request;
@ModelAttribute
public void setRequest(@RequestBody Object request) {
this.request = request;
}
@Override protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
logger.info(this.request)
}
@Override
protected ResponseEntity<Object> handleHttpMessageNotReadable(HttpMessageNotReadableException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
return new ResponseEntity<Object>(ex, HttpStatus.BAD_REQUEST);
}
}
【问题讨论】:
-
你是怎么解决这个问题的?我遇到了同样的问题:(
-
我很抱歉。真的是很久以前的事了。可能是因为我解决不了这个问题,所以没有拿到请求值了。 github.com/zcmgyu/it-blog-backend/blob/…
标签: java spring-boot exception-handling modelattribute