接受URL如果我註釋字段@URL
:Hibernate驗證@URL不無架構
@URL
private String myUrl;
,並嘗試值設置爲它沒有架構(google.com
代替http://google.com
)
那麼就會拋出ConstraintViolationException
。
如何讓我接受沒有模式的URL?
接受URL如果我註釋字段@URL
:Hibernate驗證@URL不無架構
@URL
private String myUrl;
,並嘗試值設置爲它沒有架構(google.com
代替http://google.com
)
那麼就會拋出ConstraintViolationException
。
如何讓我接受沒有模式的URL?
據我記得,你可以在getter上使用該註解 - 在該方法內部,你可以指定如果模式不存在,應該添加該模式。你甚至可以去儘可能創建虛擬財產的getter:
String getMyUrl() {
return myUrl;
}
@URL
String getMyUrlWithSchema() {
return (myUrl != null &&
!myUrl.startsWith("http://") &&
!myUrl.startsWith("https://")) ?
"http://" + myUrl :
myUrl;
}
或者你可以寫你的own validator。
作爲驗證例程的一部分,在UrlValidator
中有一個java.net.URL
具有給定值的對象被實例化。它的構造函數不包含沒有協議的URL,因此約束被認爲是無效的。如果您想接受沒有協議的網址,您可以通過@Pattern
使用正則表達式,或者爲@Url
約束創建自定義驗證器,以提供所需的邏輯。