Java 自定义字符串方法验证JSR303 SpringMVC

Java 自定义字符串方法验证JSR303 SpringMVC,java,spring,validation,spring-mvc,bean-validation,Java,Spring,Validation,Spring Mvc,Bean Validation,我有一个RESTAPI,我想在其中验证方法级别的参数。对于@Valid和一个包含验证注释的自定义对象,它可以正常工作,但如果我使用字符串并将注释直接写入方法符号中,它就会失败 我的验证器 什么工作,但不是很好的代码风格 我想要什么 如您所见,我想使用自定义验证器在方法级别验证字符串参数。但这是行不通的。如果我在方法中放入一个无效参数,它将通过,并且永远不会执行验证 当然,我可以用另一种方法检查正则表达式,因为它是一个路径变量,但我在其他方法中也有相同的场景,我希望有一个通用的解决方案来解决这个

我有一个RESTAPI,我想在其中验证方法级别的参数。对于@Valid和一个包含验证注释的自定义对象,它可以正常工作,但如果我使用字符串并将注释直接写入方法符号中,它就会失败

我的验证器 什么工作,但不是很好的代码风格 我想要什么 如您所见,我想使用自定义验证器在方法级别验证字符串参数。但这是行不通的。如果我在方法中放入一个无效参数,它将通过,并且永远不会执行验证


当然,我可以用另一种方法检查正则表达式,因为它是一个路径变量,但我在其他方法中也有相同的场景,我希望有一个通用的解决方案来解决这个问题

信息:
我目前使用的是Spring版本:4.0.7

看看HandlerMethodInvoker、ModelAttributeMethodProcessor和DataBinder#validate类。在数据绑定期间,您是否看到任何可能的解决方案来钩住spring验证逻辑?我建议坚持使用“形式”解决方案,因为它非常简单明了。@Ivan:对不起,我不明白你的意思。我读过这些类的JavaDoc,但我没有任何想法。你能再给我一个提示吗?抱歉耽搁了。我正在调查消息来源。。列出的类负责数据绑定和验证(您感兴趣),因此您可以自己验证逻辑-只需搜索有效和PathVariable注释用法。然后您将能够回答自己的问题:)
@Documented
@Constraint(validatedBy = {})
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Pattern(regexp = "^[A-Za-z]{5}[0-9]{3,128}$")
public @interface CustomValidator{

    public abstract String message() default "Custom Message"

    public abstract Class<?>[] groups() default {};

    public abstract Class<?>[] payload() default {};
}
@RestController
public class MyController {
    ...
}
@Data
public class FoobarForm{

    @NotNull
    @CustomValidator 
    String foobar;
}

@RequestMapping(value = "/foo/{bar}", method = RequestMethod.GET)
public Bank checkFoobar(@Valid @CustomValidator @PathVariable String foobar) {
@RequestMapping(value = "/foo/{bar}", method = RequestMethod.GET)
public Bank checkIban(@Validated @NotNull @CustomValidator @PathVariable String foobar) {