Nach dem Quellcode UrlValidator
, ruft DomainValidator
, die validates the TLD in the URL.
Voll qualifizierter Klassenname ist org.apache.commons.validator.routines.UrlValidator
, nicht mit der veralteten Implementierung org.apache.commons.validator.UrlValidator
DomainValidator
Anrufe isValidTld
zu überprüfen, die TLD verwechselt werden. Bei aktivierter Option ALLOW_LOCAL_URLS
prüft es zunächst den Domänennamen anhand der Liste der lokalen TLDs in isValidLocalTld
und überprüft dann die Domäne auf isValidInfrastructureTld
, isValidGenericTld
und isValidCountryCodeTld
. url
ist jedoch in keiner der Listen enthalten.
mit lokalem URLs erlaubt, DomainValidator
hat eine abschließende Prüfung für domain name without dot für lokale URL (z localhost
), aber Ihre URL in diesen Fall nicht entweder fallen.
Daher wird Ihre URL von UrlValidator
abgelehnt.
Wie für die Lösung scheint es, dass Sie Ihre eigenen RegexValidator
definieren und es in UrlValidator(RegexValidator authorityValidator, long options)
Konstruktor übergeben können. Es kann eine gute Idee sein, den Quellcode DomainValidator.isValidAuthority
als Referenz zu verwenden, um die Domäne vom Autorisierungsteil zu analysieren und Ihre eigene Logik zur Validierung der Domäne bereitzustellen.
'UrlValidator', der [' DomainValidator'] aufruft (https://commons.apache.org/proper/commons-validator/apidocs/src-html/org/apache/commons/validator/routines/DomainValidator.html) um zu prüfen, ob die URL eine gültige TLD hat ('isValidInfrastructureTld',' isValidGenericTld' und 'isValidCountryCodeTld'), mit allow local URL überprüft sie' isValidLocalTld', aber 'url' gehört nicht zur TLD, also Ihre URL ist abgelehnt. – nhahtdh
Das war richtig, danke –