簡體   English   中英

使用內置注釋創建自定義驗證注釋

[英]Creating custom validation annotation using built-in annotations

在我正在使用的系統中, username必須為emailcell number

我正在使用Hibernate Validator來驗證bean。

我想創建一個自定義批注@Username ,以便它驗證bean屬性是email還是cell number

電子郵件可以被驗證@Email和細胞數目使用正則表達式@Pattern ,但我無法弄清楚如何編寫自定義的驗證,這樣我可以重用上面內置的注釋。

我參考了創建自定義驗證器這一節來創建自定義驗證器。

基本上我的問題是

如何使用內置的驗證批注( @Email@Pattern )來@Username新的批注@Username ,以便@Username驗證屬性為email還是cell number

// @Email or @Pattern("...") ???
@Target(FIELD)
@Retention(RUNTIME)
@Constraint(validatedBy = {})
@Documented
public @interface Username {
   /* ... */
}

如果要符合Bean驗證要求,則不能。 沒有約束的或組成的概念。 但是,如果您使用的是Hibernate Validator,並且可以使用提供程序特定的功能,則可以在Hibernate Validator中使用布爾組合-http: //docs.jboss.org/hibernate/stable/validator/reference/zh-CN/html_single /#section-boolean-constraint-composition

@Target(FIELD)
@Retention(RUNTIME)
@Constraint(validatedBy = {})
@Documented
@ConstraintComposition(OR)
@Email
@Pattern("...")
public @interface Username {
   /* ... */
}

暫無
暫無

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

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