当前位置: 首页 > 知识库问答 >
问题:

Java约束注释:将参数值传递给复合约束

巫马自明
2023-03-14

我正在尝试创建自己的复合验证注释来验证字符串——到目前为止,它由注释@NotNull、@NotBlank和@Size组成

但是,我不想让它们保持默认值,而是希望能够传入一个参数值,例如,如果我执行@ValidString(min=1,max=50),那么@Size注释可以读取这些值——这可能吗?

我的约束-

@NotNull()
@NotBlank()
@Size()
@Constraint(validatedBy = ValidStringValidator.class)
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
public @interface ValidString {
    String message();
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
    int min() default 1;
    int max() default 255;
}

共有2个答案

舒俊雄
2023-03-14

没有,但是您的注释可以包含其他注释,例如。

@NotNull()
@NotBlank()
@Constraint(validatedBy = ValidStringValidator.class)
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
public @interface ValidString {
    String message();
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
    Size size() default @Size(/*enter default size arguments here*/);

}

陶瀚玥
2023-03-14

您可以使用OverridesAttribute

@Size(min=1, max=255)
@Retention(RUNTIME)
@Target({ TYPE, FIELD })
@Constraint(validatedBy={})
public @interface ValidString {
    String message();
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

    @OverridesAttribute(constraint=Size.class, name="min")
    int min() default 1;

    @OverridesAttribute(constraint=Size.class, name="max")      
    int max() default 255;
}
 类似资料:
  • 我正在使用注释处理来生成一些类...我有两个模块,处理器本身和使用它的“客户端”模块。我想通过客户端向处理器传递一个参数,我可以这样做 如何在处理器端检索此参数?

  • 假设我有一个类模板,

  • 我有一系列复杂的类型级别函数,它们的计算结果如下: 显然,在这种情况下,这个表达式是一个。更一般地说,我们可以说: 有没有办法教GHC推断这一点? 编辑:@chi指出,在某些情况下,GADT可以解决这一问题,但我的特殊情况是: 然后 不能被访问,但是也许GHC应该能够推断出

  • 假设我有一个带有属性的注释: 我想创建一个包含多个元注释的复合注释,包括一个带有属性的注释 有没有一种方法可以将复合注释的属性传递给其中一个元注释? 例如,类似这样的东西: 这相当于,但比 谢谢! PS为我对示例注释的错误选择表示歉意-我没有javax。注射@记住命名注释,只是一些具有属性的任意注释。 谢谢大家的回答/评论。 这显然是不可能的。然而,碰巧我的案例有一个简单的解决方法,我将与大家分享

  • 我在数据库中有Consumer表,其中Consumer_type列上有check约束,如下所示: 现在,从hibernate方面,我想添加check约束注释,该注释只允许消费者类型表中的“ACCOUNT”和“ORGANIZATION”值。 为此,我应该使用哪个hibernate/jpa注释?

  • 我希望对spring服务的参数使用java bean验证注释。考虑以下服务: