簡體   English   中英

如何不重復Bean驗證的注釋?

[英]How to not repeat annotations for Bean Validation?

我使用Spring MVC進行表單驗證。 用戶實體具有字段登錄:

@Pattern(regexp = Constants.LOGIN_PATTERN)
@Size(min = 4, max = 50)
private String login;

但我希望將這個注釋用於其他字段,例如,使用RegisterData.login。 所以我創建了另一個注釋:

@Retention(RetentionPolicy.RUNTIME)
@Target(value = { ElementType.FIELD, ElementType.PARAMETER })
@Pattern(regexp = Constants.LOGIN_PATTERN)
@Size(min = 4, max = 50)
public @interface Login {
}

現在用它標記字段。 但這不起作用。 它是一種使用這種“繼承”的方式嗎? 或者我應該重復一遍?

通過添加@Constraint注釋,您缺少@Login注釋的聲明作為約束。 Bean Validation規范

通過使用組合約束注釋來注釋約束注釋來完成組合。

由於組合約束不需要驗證器,因此可以將validatedBy屬性設置為空數組。

@Pattern(regexp = Constants.LOGIN_PATTERN)
@Size(min = 4, max = 50)
@Constraint(validatedBy = {})
@Target(value = { ElementType.FIELD, ElementType.PARAMETER })
@Retention(RetentionPolicy.RUNTIME)
public @interface Login {

    String message() default "Incorrect login";

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

    Class<? extends Payload>[] payload() default { };

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM