我尝试使用 Spring Validator 和 @Validated 注释来验证 Get Request 参数,但无法运行验证器。我正在使用 ModelAttribute 尝试让验证器在路径变量而不是请求正文上运行。是否可以在获取请求路径变量上运行验证器?
这是我的控制器类和方法
@RestController
public class ProfileController {
@RequestMapping(value = "/profile/{param}", method = RequestMethod.GET)
public IVRProfile getProfile(@Validated(ParamValidator.class) @ModelAttribute("param") String param) {
return sampleProfile();
}
@ModelAttribute("param")
public String paramAsModelAttribute(@PathVariable String param) {
return param;
}
}
Run Code Online (Sandbox Code Playgroud)
和验证器类
@Component
public class ParamValidator implements Validator
{
@Override
public boolean supports(Class<?> clazz)
{
System.out.println("Validator supports test");
return String.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors)
{
System.out.println("Validator Test");
// Validation code
}
}
Run Code Online (Sandbox Code Playgroud)
当到达端点时,两个打印语句都不会被执行。 …