相关疑难解决方法(0)

Spring中@Valid和@Validated之间的区别

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)

这里,@ Validjavax.validation.Valid,而@Validated是org.springframework.validation.annotation.Validated.后者的文档说

JSR-303的变体有效,支持验证组的规范.设计方便使用Spring的JSR-303支持,但不支持JSR-303特定.

这没有多大帮助,因为它没有确切地说明它是如何不同的.如果有的话.两者似乎都对我很好.

java validation spring spring-mvc

80
推荐指数
4
解决办法
6万
查看次数

仅当不为空或零时,如何java bean 验证范围

我想使用 Java Bean 验证来验证一个整数。它是多重验证的验证。

我目前正在使用 Spring Boot 和验证,并且系统正在使用@RestController我正在接收呼叫后的位置。

public Person addPerson(@RequestBody @Validated Person Person) {/*the code*/}
Run Code Online (Sandbox Code Playgroud)

我希望验证年龄,这些值是有效的:

age == null or age == 0 or (age >= 15 and age <= 80)


public class Person {
    private Integer age;
}
Run Code Online (Sandbox Code Playgroud)

我希望能够使用 java 的当前验证约束。我需要实现我自己的约束注释吗?

这会很好,但这不起作用:

public class Person {
    @Null
    @Range(min=0, max=0)
    @Range(min=15, max = 80)
    private Integer age;
}
Run Code Online (Sandbox Code Playgroud)

java validation validationrules bean-validation

2
推荐指数
1
解决办法
4639
查看次数