我正在开发一个 Spring Boot 2 项目,并尝试向其中引入 Bean 验证。
我的 bean 正在验证,但没有返回任何错误响应。
我有一个 POJO 注释如下
@Data
public class AccountSelectBeanRequest implements Serializable {
@JsonProperty("accountNo")
@Size(max = 10,message = "maximum length is 10")
private String accountNo;
@JsonProperty("ship-to")
private String shipTo;
Run Code Online (Sandbox Code Playgroud)
}
在资源方法中,我有 @Valid 注释,如下所示
@PostMapping("/account-select")
public ResponseEntity<?> selectAccount(@Valid @RequestBody AccountSelectBeanRequest accountRequest) {...}
Run Code Online (Sandbox Code Playgroud)
当我调用大于 10selectAccount
的方法时accountNo
,我收到一个 HTTP 400 Bad Request ,其中响应正文为空。
但是,如果我像下面这样验证资源方法中的请求参数,它会按预期返回错误响应正文。
@PostMapping(value = "/generate-token")
public ResponseEntity<?> login(@RequestParam String username, @RequestParam @NotNull @NotEmpty String password)
Run Code Online (Sandbox Code Playgroud)
这种行为的原因可能是什么?
POM 依赖关系
<parent>
<groupId>org.springframework.boot</groupId> …
Run Code Online (Sandbox Code Playgroud)