所以我使用的是UrlValidator(org.apache.commons.validator.routines.UrlValidator),我想知道是否有办法自定义它允许的域名。现在它似乎只允许TLD,但我有一两个我想要有效但不在该列表上,例如“.corp”(列表在这里找到:http://data.iana.org/TLD/tlds-alpha-by-domain.txt)。是否有设置或解决方法,所以我不必创建自己的网址验证器,只能使用添加域名的这个?
答案 0 :(得分:1)
您可以在JUnit测试用例的下面找到。
import org.apache.commons.validator.routines.DomainValidator;
import org.apache.commons.validator.routines.UrlValidator;
class UrlValidatorTestCase extends TestCase {
private static final String[] GENERIC_TLDS_PLUS = new String[] { "corp" };
static {
DomainValidator.updateTLDOverride(DomainValidator.ArrayType.GENERIC_PLUS, GENERIC_TLDS_PLUS);
}
public void test_UrlValidator_isValid_corp_tld() {
assertTrue(UrlValidator.getInstance().isValid("http://domainlabel.corp"));
}
}
经过commons-validator 1.6测试
答案 1 :(得分:0)
我最终想出了一种可行的方法,但我没有使用它或实现它。当url无效时,我将使用DomainValidator(source)将其置于另一个检查中。我打算使用updateTLDOverride方法,但是他们在v 1.5.0中有一个错误,其中方法调用的参数使用私有或受保护的变量。这是在1.5.1中修复的,但我使用的是Maven,而repo只用于1.5.0版本的验证器。