Java Hibernate Validator@URL don';不接受没有架构的URL
如果我用Java Hibernate Validator@URL don';不接受没有架构的URL,java,bean-validation,hibernate-validator,Java,Bean Validation,Hibernate Validator,如果我用@URL注释字段: @URL private String myUrl; 并尝试在没有模式的情况下为其设置值(google.com而不是http://google.com) 然后它将抛出ConstraintViolationException 我如何允许接受没有模式的URL 据我记忆所及,您可以在getter上使用该注释-在该方法中,您可以指定应添加的模式(如果该模式尚未出现)。您甚至可以创建虚拟财产getter: String getMyUrl() { return myUr
@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;
}
或者,您也可以编写您的。据我所知,您可以在getter上使用该注释-在该方法中,您可以指定应该添加的模式(如果该模式尚未出现)。您甚至可以创建虚拟财产getter:
String getMyUrl() {
return myUrl;
}
@URL
String getMyUrlWithSchema() {
return (myUrl != null &&
!myUrl.startsWith("http://") &&
!myUrl.startsWith("https://")) ?
"http://" + myUrl :
myUrl;
}
或者,您可以在
UrlValidator
ajava.net.URL
中编写您的。作为验证例程的一部分,并实例化具有给定值的对象。它的构造函数不排除没有协议的URL,因此该约束被认为是无效的。如果要接受不带协议的URL,您可以通过@Pattern
使用正则表达式,也可以为@Url
约束创建自定义验证器,以提供所需的逻辑。作为urlvalidater
中验证例程的一部分,java.net.Url
对象将实例化给定值。它的构造函数不排除没有协议的URL,因此该约束被认为是无效的。如果要接受不带协议的Url,可以通过@Pattern
使用正则表达式,或者为@Url
约束创建自定义验证器,以提供所需的逻辑