我在Spring-Boot中设计了一个Restful Controller 。它有一个持久化书籍对象的方法(使用 post 方法),除非您发送无效输入(例如,如果您向整数字段发送非整数值),否则该方法可以完美工作。这里的问题是,相反,实现 BindingResult 对象 spring 会抛出 HttpMessageNotReadableException 异常。因此,我无法处理/处理绑定(bind)错误和进一步验证。
我需要的是如何告诉 spring 在将请求绑定(bind)到对象时不抛出任何异常,这样我就可以使用 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 );
}
最佳答案
首先,您必须在图书对象中添加验证注释,如下所示:
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 );
}
关于java - BindingResult 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50617650/