2013-11-27 96 views
0

接受URL如果我註釋字段@URLHibernate驗證@URL不無架構

@URL 
private String myUrl; 

,並嘗試值設置爲它沒有架構(google.com代替http://google.com

那麼就會拋出ConstraintViolationException

如何讓我接受沒有模式的URL?

回答

0

據我記得,你可以在getter上使用該註解 - 在該方法內部,你可以指定如果模式不存在,應該添加該模式。你甚至可以去儘可能創建虛擬財產的getter:

String getMyUrl() { 
    return myUrl; 
} 

@URL 
String getMyUrlWithSchema() { 
    return (myUrl != null && 
       !myUrl.startsWith("http://") && 
       !myUrl.startsWith("https://")) ? 
      "http://" + myUrl : 
      myUrl; 
} 

或者你可以寫你的own validator

0

作爲驗證例程的一部分,在UrlValidator中有一個java.net.URL具有給定值的對象被實例化。它的構造函數不包含沒有協議的URL,因此約束被認爲是無效的。如果您想接受沒有協議的網址,您可以通過@Pattern使用正則表達式,或者爲@Url約束創建自定義驗證器,以提供所需的邏輯。