Java Spring IP地址验证
我正在寻找在我的SpringRoo项目中验证IP地址的可能性 我的实体看起来像这样Java Spring IP地址验证,java,spring,validation,ip,spring-roo,Java,Spring,Validation,Ip,Spring Roo,我正在寻找在我的SpringRoo项目中验证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.RooJavaBea
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;
那太好了
有没有可能的想法?肯定有可能。您需要编写一个自定义注释和实现类。没有太多的努力。请参见此处了解背景:
@Retention(RetentionPolicy.RUNTIME)
@目标({ElementType.METHOD,ElementType.FIELD,ElementType.ANNOTATION_TYPE})
@记录
@约束(validatedBy=IpAddressValidator.class)
公共@接口IP地址
{
字符串消息()默认值“{ipAddress.invalid}”;
类[]组()默认值{};
类本质上,您希望将JSR-303注释与自定义验证器一起使用。请参阅完整的工作示例。您可以使用带有IP地址正则表达式的JSR 303模式验证器:
@NotNull
@Pattern(regexp = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$")
private String ip;
编辑:转义反斜杠您需要构建自己的验证程序。请查看验证ISBN号的示例。该模式可以轻松扩展…关键是,当您可以使用常规表达式时,您不需要编写额外的批注和验证程序,但如果您创建了额外的批注,我可以多次使用它,而且我必须这样做只在一个地方扩展它。感谢regex,我无论如何都需要它来进行验证。regexp字符串文本需要转义。请解释为什么initialize方法为空?您需要该方法来满足ConstraintValidator接口的约定,但如果您不需要实际初始化任何内容,则可以将其保留为空。
public class IpAddressValidator implements ConstraintValidator<IpAddress, Object>
{
@Override
public void initialize(IpAddress constraintAnnotation)
{
}
@Override
public boolean isValid(Object value, ConstraintValidatorContext cvContext)
{
// logic here
}
}
@NotNull
@Pattern(regexp = "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$")
private String ip;