Лучший способ проверки URL с помощью Spring-MVC? - PullRequest
3 голосов
/ 24 января 2012

Я использую Spring MVC для своего веб-приложения.Мне нужно проверить, что URL-адрес, введенный пользователем, действителен, и мне было интересно, есть ли что-то в Spring, которое может выполнить основные проверки для меня (например, начинается с http / https, имеет доменное имя и т. Д.).

ValidationUtils содержит только базовые проверки, и я знаю, что могу написать регулярное выражение в методе validate (), однако предпочитаю избегать его в том случае, если кто-то уже это сделал:)

Спасибо

Ответы [ 4 ]

4 голосов
/ 25 января 2012

В прошлом я всегда использовал Hibernate Validator . Просто аннотируйте соответствующее поле в компоненте формы с ограничением @URL.

Если вы никогда раньше не использовали часть ORM в Hibernate, пусть это вас не пугает. Часть Validator не зависит от ORM, и ее интеграция в Spring очень проста .

Если по какой-то причине вы не можете использовать Hibernate Validator ... или вы просто хотите придерживаться того, с чем вам удобно, хорошим местом для регулярных выражений является RegExLib.com; там перечислены несколько шаблонов, которые могут соответствовать URI .

3 голосов
/ 06 февраля 2012

Завершено с помощью UrlValidator из apache commons .

0 голосов
/ 04 августа 2015

Я знаю, что этот вопрос довольно старый, но мне просто нужно то же самое, и я думаю, что я пойду с PropertyEditors в SpringFramework.

Точнее, есть URLEditor , который можно использовать для преобразования представления String в фактический объект URL.

Вот ссылка на соответствующую документацию:

http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#beans-beans-conversion

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/beans/propertyeditors/URLEditor.html

В моем случае я думаю об использовании следующего кода в Spring Validator, чтобы проверить, является ли строка, введенная пользователем, действительным URL-адресом:

try {
        PropertyEditor urlEditor = new URLEditor();
        urlEditor.setAsText(field.getValue());
    } catch (IllegalArgumentException ex) {
            errors.rejectValue("nameOfTheFieldToBeValidated", "url_is_invalid");
}

Однако на данный момент я не уверен, возможно ли настроить, какой протокол будет принят как действительный (т.е. URLEditor, похоже, также принимает URL-адреса, начинающиеся с «classpath:»)

0 голосов
/ 24 января 2012

Используйте пружинный перехватчик:

http://java.dzone.com/articles/using-spring-interceptors-your

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...