我正在寻找一种可能性来验证我的Spring Roo项目中的IP地址。
我的实体看起来像这样
package com.ip.test.domain;
import javax.persistence.ManyToOne;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.springframework.roo.addon.javabean.RooJavaBean;
import org.springframework.roo.addon.jpa.activerecord.RooJpaActiveRecord;
import org.springframework.roo.addon.tostring.RooToString;
@RooJavaBean
@RooToString
@RooJpaActiveRecord
public class IP {
@NotNull
@Size(min = 7, max = 15)
private String ip;
@ManyToOne
private Hoster Hoster;
}
使用这种设置,它只验证字符串是否包含7到15个字符,而不是IP地址。
就像
@validIpAddress
private String ip;
会很好
有没有可能?
4条答案
按热度按时间2vuwiymt1#
您可以使用JSR 303模式验证器,使用IP地址regex:
编辑:转义反斜杠
lsmepo6l2#
绝对有可能。您需要编写一个自定义注解和实现类。不用太费力。请参阅此处了解背景:http://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html_single/#validator-customconstraints
和/或
lnvxswe23#
实际上,您希望使用带有自定义验证器的JSR-303注解。参见完整的工作示例here。
uklbhaso4#
我知道我在挖掘一个旧的答案,但我想在这里添加一些东西。我认为这可能会有所帮助,因为我个人对所有这些答案都不满意,有几个原因。
1).像这样在每个IP上面做一个@Pattern有点难看,如果能包含一个快速的类就很酷了。
2). IPv4很简单。IPv6不是。
如果你想使用IPv6,请阅读以下内容:Regular expression that matches valid IPv6 addresses
3).如果你想要一个简单的IPv4验证器在一个很好的类,看看这个代码,我砍在一起,并在我自己的网站上测试。效果很好。
当然,还有一个非常好的单元测试,你可以用途: