小编Bla*_*keM的帖子

使用 Spring @Validated 注解验证获取请求路径变量

我尝试使用 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)

当到达端点时,两个打印语句都不会被执行。 …

java validation spring spring-boot

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

标签 统计

java ×1

spring ×1

spring-boot ×1

validation ×1