Java 在apache.commons中将域添加到UrlValidator

Java 在apache.commons中将域添加到UrlValidator,java,apache,url,apache-commons,url-validation,Java,Apache,Url,Apache Commons,Url Validation,因此,我正在使用UrlValidator(org.apache.commons.validator.routines.UrlValidator),我想知道是否有一种方法可以自定义它允许的域。现在它似乎只允许TLD,但我有一个或两个我想要有效的,不在该列表中,例如“.corp”(列表在这里找到:)。是否有一个设置或解决方法,这样我就不必创建自己的url验证程序,只需将此验证程序与添加的域一起使用?我最终找到了一种可行的方法,但我没有使用或实现它。当url无效时,我打算使用DomainValidat

因此,我正在使用UrlValidator(org.apache.commons.validator.routines.UrlValidator),我想知道是否有一种方法可以自定义它允许的域。现在它似乎只允许TLD,但我有一个或两个我想要有效的,不在该列表中,例如“.corp”(列表在这里找到:)。是否有一个设置或解决方法,这样我就不必创建自己的url验证程序,只需将此验证程序与添加的域一起使用?

我最终找到了一种可行的方法,但我没有使用或实现它。当url无效时,我打算使用DomainValidator()将其放入另一个检查中。我曾计划使用UpdatelDoverride方法,但他们在V1.5.0中有一个bug,其中方法调用的参数使用私有或受保护的变量。这在1.5.1中得到了修复,但我使用的是Maven,对于验证器来说,回购协议只适用于1.5.0版本

您可以在下面找到一个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进行测试