我有一个代表公司的JPA实体。它有一个代表公司网站URL的字段。我需要在持续之前验证该网址是否为有效的网站网址。我想只有以http或https开头的网址才是有效的网站网址。我如何执行此操作?我正在使用最新版本。 Hibernate的版本作为我的JPA提供者。如何验证JPA实体的网站URL字段?
回答
看看Hibernate Validator的@URL注释。
谢谢。这意味着我需要将网站URL字段表示为'String'而不是'java.net.URL'。我想这是可以的。但是,如何指定多个协议,如'http'和'https'。 '@URL''协议''属性只需要一个'String'。不要以为我应该允许使用'file','ftp'等协议。 – user247123
@dimitrisli建议你一个正确的解决方案。您应该使用@URL
约束。如果你想允许特定的协议 - 有此约束属性:
@URL(protocol = "http")
private String companyUrl;
另外也有一个regexp
属性,你可以用它让你的网址,以符合您想要的任何图案。
@URL(regexp = "^(http|ftp)")
private String companyUrl;
您可以检查在doc更多详细资料(寻找在链接的部分URL)。
此外,如果你想使用URL
而不是字符串,你可以写自己的验证实施URL
类和URL
约束,但要注意,如果你想尝试创建一个无效的URL
在创建过程中会失败而不是经过验证。因此,编写一个验证器URL
可能是有意义的,只有当你想检查协议和类似的东西。
为了编写自己的验证,你需要实现
public class URLValidator implements ConstraintValidator<org.hibernate.validator.constraints.URL, URL> {
...
}
了解更多详情请查看this博客文章。
正则表达式不适用于我。如果我使用regexp =“^(http | https)”对URL验证程序验证https://www.google.com,则验证失败。 – user247123
正确...这是因为它试图将该表达式匹配到“String”值,而在您的情况下,它不是以协议开始。 .. 但它是一个有效的URL,但? (我的意思是如果它没有协议) –
我想通了。这是因为正则表达式匹配整个字符串,而不仅仅是同类字符串的出现。我需要添加。*,使得regexp =“^(http | https)。*” – user247123
- 1. 如何验证Perl中的网站URL?
- 2. 验证网站URL/SiteMap的工具?
- 3. 如何为@ Assert \ EqualTo验证字段实体使用多个值
- 4. 如何使用python实现网站的帐户凭证验证
- 5. 网页字段验证
- 6. 验证网站的凭证
- 7. JPA:如何创建与实体相同类型的字段?
- 8. JPA:如何根据ID以外的字段值获取实体?
- 9. JPA:@Embedded实体如何将自己的类型作为字段?
- 10. 如何构建ASP.NET MVC网站的CAPTCHA验证体系结构?
- 11. 如何验证网站的所有权?
- 12. 如何验证网站的所有权?
- 13. 验证URL段落
- 14. 如何验证某个字段的具体数字?
- 15. 网站窗体身份验证 - > SQL Server Windows身份验证
- 16. 使用实体字段可以持久化JPA实体吗?
- 17. 如何使用Facelets + JPA持久化实体时比较和验证2个字段?
- 18. Google Analytics如何验证网站?
- 19. 如何从Firefox插件验证网站?
- 20. 如何验证整个网站?
- 21. 忽略选择实体字段的弹簧mvc JSR-303验证
- 22. 使用Jeditable插件验证URL字段
- 23. 如何覆盖实体选择字段的默认验证消息?
- 24. AOL OpenID的网站验证
- 25. 网站的HTML验证器
- 26. 网站的特定验证
- 27. JSF 2重用JPA实体中定义的验证?
- 28. 如何使用html5验证器验证php网站
- 29. 如何在硒中验证某个字段的粗体外观
- 30. 如何验证窗体并显示填充字段的值?
为了更好的说明:JPA注释在数据(模型)上。验证的实时效果应该在GUI层上看到。必须连接两者。最好的是使用完整的框架(Web应用程序的Web框架),而不是'手动'代码, –
JPA与Bean验证无关。这是Bean验证API –