gpt4 book ai didi

java - BindingResult 不起作用

转载 作者:行者123 更新时间:2023-12-02 11:11:04 25 4
gpt4 key购买 nike

我在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/

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