我有一个代表公司的JPA实体。它有一个代表公司网站URL的字段。我需要在保留之前验证URL是否是有效的网站URL。我想只有以http或https开头的网址才是有效的网站网址。我该如何强制执行此操作?我使用的是最新版本。 Hibernate的版本作为我的JPA提供者。
答案 0 :(得分:2)
@dimitrisli建议你一个正确的解决方案。您应该使用@URL
约束。如果您想允许特定协议 - 此约束有protocol
属性:
@URL(protocol = "http")
private String companyUrl;
此外,还有regexp
属性,您可以使用该属性使您的网址与您喜欢的任何模式相匹配。
@URL(regexp = "^(http|ftp)")
private String companyUrl;
您可以在doc中查看更多详细信息(在链接部分查找网址)。
此外,如果您想使用URL
而不是String,您可以为URL
类和URL
约束编写自己的验证器实现,但请注意您是否&# 39; d尝试创建无效的URL
,它将在创建过程中失败,而不是在验证时失败。因此,只有在您想要检查协议及类似内容时,为URL
编写验证器才有意义。
要编写自己的验证器,您需要实现
public class URLValidator implements ConstraintValidator<org.hibernate.validator.constraints.URL, URL> {
...
}
有关详细信息,请查看this博文。
答案 1 :(得分:0)
查看Hibernate Validator的@URL注释。