我在Spring-Boot中设计了一个Restful控制器。它有一个持久化书籍对象的方法(使用post方法),除非你发送无效输入(例如,如果你向一个整数字段发送一个非整数值),它的工作方式是完美的。这里的问题是,相反,履行BindingResult对象会抛出HttpMessageNotReadableException异常。因此,我无法处理/处理绑定错误和进一步验证。
我需要的是我如何告诉spring在绑定请求对象时不抛出任何异常,所以我可以使用bindingResult.hasErrors()并以我自己的方式处理它。
注意:我不想处理Spring生成的对象。
这是我的代码:
@PostMapping
public ResponseEntity<Book> saveBook (
@RequestBody Book book, BindingResult bindingResult, HttpServletRequest request ) {
if ( bindingResult.hasErrors() == true )
throw new RestArgumentValidationException( bindingResult, request.getRequestURI() );
return new ResponseEntity<>( bookRepository.save( _book ), HttpStatus.CREATED );
}
答案 0 :(得分:1)
首先,您必须在书籍对象中加入验证注释,如下所示:
public class Book {
@Size(min = 5, max = 10)
int height;
}
然后你应该将@Valid放在需要验证的对象中,让Spring知道。
@PostMapping
public ResponseEntity<Book> saveBook (
@RequestBody @Valid Book book, BindingResult bindingResult, HttpServletRequest request ) {
if ( bindingResult.hasErrors() == true )
throw new RestArgumentValidationException( bindingResult, request.getRequestURI() );
return new ResponseEntity<>( bookRepository.save( _book ), HttpStatus.CREATED );
}