2012-01-24 45 views
2

我为我的web应用程序使用Spring MVC。 我需要验证用户输入的URL是否有效,并想知道是否有什么可以为我做基本检查(例如以http/https开头,有域名等)。使用Spring-MVC验证URL的最佳实践?

仅ValidationUtils相关含有非常基本的检查,我知道我可以在validate()方法写一个正则表达式却宁愿避免它INM情况下,有人已经做了:)

感谢

回答

3

结束使用UrlValidatorapache commons

0
+0

据我了解,Spring拦截器允许您修改HttpRequest和HttpResponse。当然,您可以在那里应用URL有效性检查,但如果是这种情况,我更喜欢使用Validator界面。我的问题更多地是关于Spring中是否有可以验证URL的代码,而不是使用凌乱的正则表达式。像“The Awnry Bear”这样的东西只有在纯粹的Spring中才与Hibernate一起展示。 – Joly

4

在过去,我一直使用Hibernate Validator。只需使用@URL约束在表单bean中注释相应的字段即可。

如果你以前从未使用过Hibernate的ORM部分,不要让它吓倒你。验证器部分不依赖于ORM的东西,并将它集成到Spring中是very straightforward

如果因为某些原因你不能使用Hibernate Validator ...或者你只是想坚持你所熟悉的东西,那么正则表达式的好地方是RegExLib.com;几种可以匹配URI的模式are listed there

0

我知道这个问题是相当古老的,但我只是需要相同的,我想我会在SpringFramework中使用PropertyEditors

更准确地说,有URLEditor,您可以使用它来将字符串表示转换为实际的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的验证中下面的代码来检查是否由输入的字符串用户是否有效URL:

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

但是,至于现在我不确定它是否是我可以配置哪个协议将被接受为有效(即, URLEditor似乎也接受以“classpath:”开头的URL)

+0

好吧,只是为了让你知道,我也使用从Apache公共的UrlValidator。 – SebastianRiemer