Spring Roo:添加多个交叉字段验证注释列表(JSR-303 Bean验证)

时间:2014-06-16 13:21:15

标签: list validation annotations constraints spring-roo

为了开发一个高级插件 提供交叉字段验证/约束 我们使用SpELAssert来制作一个小捷径。

使整个事情适用于多重约束 在某些字段中,必须在列表中管理它们。

这种类型/样式的注释和FieldMatch与我们非常相似。

显然它将它呈现为“$ List”(内部接口?)而不是“.List”并且无法正常工作。

我迷路了......

    package cz.jirutka.validator.spring;
    import static java.lang.annotation.ElementType.FIELD;
    import static java.lang.annotation.ElementType.METHOD;
    import static java.lang.annotation.ElementType.TYPE;
    import static java.lang.annotation.RetentionPolicy.RUNTIME;
    import java.lang.annotation.Documented;
    import java.lang.annotation.Retention;
    import java.lang.annotation.Target;
    import javax.validation.Constraint;
    import javax.validation.Payload;

    @Documented
    @Retention(RUNTIME)
    @Target({METHOD, FIELD, TYPE})
    @Constraint(validatedBy = SpELAssertValidator.class)
    public @interface SpELAssert {

            String message() default "{cz.jirutka.validator.spring.SpELAssert.message}";
            Class<?>[] groups() default {};
            Class<? extends Payload>[] payload() default {};

            String value();
            String applyIf() default "";
            Class<?>[] helpers() default { };

            @Target({METHOD, FIELD, TYPE})
            @Retention(RUNTIME)
            @Documented
            @interface List
            {
                    SpELAssert[] value();
            }
    }

编辑1 以获得进一步说明

现在 - 使用:

创建注释(类型)
    // Create JavaType instance for the add-ons trigger annotation
    JavaType rooSpELAssert = new JavaType("cz.jirutka.validator.spring.SpELAssert");

或者

    // Create JavaType instance for the add-ons trigger annotation
    JavaType rooSpELAssert = new JavaType(SpELAssert.class.getName());

结果:

    @SpELAssert()

但是如何:

    @SpELAssert.List()

失败的想法:

    JavaType rooSpELAssert = new JavaType(SpELAssert.List.class.getName());
    //==> @SpELAssert$List()

0 个答案:

没有答案