在apache.commons中将域添加到UrlValidator

时间:2016-03-02 20:20:25

标签: java apache url apache-commons url-validation

所以我使用的是UrlValidator(org.apache.commons.validator.routines.UrlValidator),我想知道是否有办法自定义它允许的域名。现在它似乎只允许TLD,但我有一两个我想要有效但不在该列表上,例如“.corp”(列表在这里找到:http://data.iana.org/TLD/tlds-alpha-by-domain.txt)。是否有设置或解决方法,所以我不必创建自己的网址验证器,只能使用添加域名的这个?

2 个答案:

答案 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版本的验证器。