![](/img/trans.png)
[英]How to use JSR 380 bean validation annotations in a Java SE project
[英]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.