感谢(在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);
}
1条答案
按热度按时间v1uwarro1#
@Valid
在@ModelAttribute
或者@RequestBody
是由DispatcherServlet
(或者更准确地说是SpringMVCRequestMappingHandlerAdapter
最终将此委托给ModelAttributeMethodProcessor
或者RequestResponseBodyMethodProcessor
有这个内置的)。添加纯文本时
javax.validation
方法参数的注解(无论这是否是控制器)必须使用@Validatied
所以使用aopMethodValidationInterceptor
可以应用。它们是应用验证的不同机制。