使用@min进行@pathvariable验证的@valid和@validated之间的关系

dzhpxtsq  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(774)

感谢(在spring中使用@valid vs@validated)以及在spring中@valid和@validated之间的差异。我现在明白他们之间的区别了。
然而,我无法理解一个特定的场景。
我有一个整数 @PathVariable 我在控制器端点中接收到的,我想使用 JSR-303 bean验证(我只使用 @Min(1) )以确保我得到一个整数 >=1 或者验证失败。
混乱-设置不工作,直到我把 @Validated 在控制器类上,已尝试 @Valid 但那没用。只是想弄清楚为什么需要它?当我用注解@valid验证pojo时,我不会被迫使用 @Validated 在课堂上。我在Spring看到了 @Validated ,它引用
jsr-303的javax.validation.valid的变体,支持验证组的规范。设计用于方便使用spring的jsr-303支持,但不是特定于jsr-303的。
但我无法确定 @Min 和班级级别 @Validated 注解。任何帮助都将不胜感激,如果我不能清楚地提出我的问题也请原谅。欢迎任何编辑或建议。
下面是我的例子-

@RestController
@Validated
public class PrimeController {

...

@GetMapping("/is-prime/{number}")
    public ObjectNode checkPrime( @Min(1) @PathVariable Integer number) {
        return primeHandler.getPrimalityResult(number);
    }
v1uwarro

v1uwarro1#

@Valid@ModelAttribute 或者 @RequestBody 是由 DispatcherServlet (或者更准确地说是SpringMVC RequestMappingHandlerAdapter 最终将此委托给 ModelAttributeMethodProcessor 或者 RequestResponseBodyMethodProcessor 有这个内置的)。
添加纯文本时 javax.validation 方法参数的注解(无论这是否是控制器)必须使用 @Validatied 所以使用aop MethodValidationInterceptor 可以应用。它们是应用验证的不同机制。

相关问题