Spring 验证注释 - 如何验证字符串中的 2 个字符条目是否为实际的美国州?
Spring validation annotation - How can I verify that a 2 character entry into a string is an actual US state?
我正在尝试使用 spring 检查用户的在线输入,以确保他们输入的两个字符是实际的美国州,有没有办法做到这一点,希望使用预设模式?像 @State 之类的(如果这是一个合法的注解)。另外,是否有一个好的注释通常用于 String street 和 String city 字段?那不是@NotNull 和@NotEmpty
如有任何帮助,我们将不胜感激!
不幸的是,没有开箱即用的方法,但是您可以创建自己的 @State
注释,您只需定义注释并 class 实施 ConstraintValidator(处理验证逻辑),例如
@Constraint(validatedBy = StateConstraintValidator.class)
@Target( { ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface State {
String message() default "{State}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
public class StateConstraintValidator implements ConstraintValidator<String, String> {
private static final Set<String> CODE_MAP = new HashSet<>(){
{add("AR");}
{add("AK");} //add more codes ...
};
@Override
public void initialize(String state) { }
@Override
public boolean isValid(String value, ConstraintValidatorContext cxt) {
if(value == null) {
return false;
}
return CODE_MAP.contains(value);
}
}
您可以用类似的方式创建其他注释。
我正在尝试使用 spring 检查用户的在线输入,以确保他们输入的两个字符是实际的美国州,有没有办法做到这一点,希望使用预设模式?像 @State 之类的(如果这是一个合法的注解)。另外,是否有一个好的注释通常用于 String street 和 String city 字段?那不是@NotNull 和@NotEmpty
如有任何帮助,我们将不胜感激!
不幸的是,没有开箱即用的方法,但是您可以创建自己的 @State
注释,您只需定义注释并 class 实施 ConstraintValidator(处理验证逻辑),例如
@Constraint(validatedBy = StateConstraintValidator.class)
@Target( { ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface State {
String message() default "{State}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
public class StateConstraintValidator implements ConstraintValidator<String, String> {
private static final Set<String> CODE_MAP = new HashSet<>(){
{add("AR");}
{add("AK");} //add more codes ...
};
@Override
public void initialize(String state) { }
@Override
public boolean isValid(String value, ConstraintValidatorContext cxt) {
if(value == null) {
return false;
}
return CODE_MAP.contains(value);
}
}
您可以用类似的方式创建其他注释。