Spring支持两种不同的验证方法:Spring验证和JSR-303 bean验证.两者都可以通过定义一个Spring验证器来使用,该验证器委托给其他委托者,包括bean验证器.到现在为止还挺好.
但是当注释实际请求验证的方法时,这是另一个故事.我可以像这样注释
@RequestMapping(value = "/object", method = RequestMethod.POST)
public @ResponseBody TestObject create(@Valid @RequestBody TestObject obj, BindingResult result) {
Run Code Online (Sandbox Code Playgroud)
或者像这样
@RequestMapping(value = "/object", method = RequestMethod.POST)
public @ResponseBody TestObject create(@Validated @RequestBody TestObject obj, BindingResult result) {
Run Code Online (Sandbox Code Playgroud)
这里,@ Valid是javax.validation.Valid,而@Validated是org.springframework.validation.annotation.Validated.后者的文档说
JSR-303的变体有效,支持验证组的规范.设计方便使用Spring的JSR-303支持,但不支持JSR-303特定.
这没有多大帮助,因为它没有确切地说明它是如何不同的.如果有的话.两者似乎都对我很好.
我目前有一个 java/spring-boot 应用程序,我将版本(在代码中)从 2.1.4 更改为 2.3.0,但结果我error: package javax.validation.constraints does not exist在尝试运行干净的构建时遇到了错误- 这来自import javax.validation.constraints.NotEmpty;我的代码中有一行 - 有谁知道如何解决这个问题以成功编译/构建代码?