【发布时间】:2017-09-24 21:06:36
【问题描述】:
我正在尝试使用 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;
}
}
还有验证器类
@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
}
}
到达端点时不会执行任何打印语句。
任何关于我可能遗漏或做不同事情的帮助将不胜感激,谢谢!
【问题讨论】:
标签: java spring validation spring-boot