@Size注释validation字段
我需要validation字段 – secPhoneNumber(辅助电话#)。 我需要使用JSRvalidation来满足以下条件
- 该字段可以为空/ null
- 否则,数据长度必须为10。
我试过下面的代码。 该字段始终在表单提交时得到validation。 如果字段不为空,如何validation字段长度为10?
弹簧forms:
豆
@Size(max=10,min=10) private String secPhoneNumber;
我认为为了便于阅读并在将来使用我将创建自定义validation类,您只需按照以下步骤操作:
-
将新的自定义注释添加到您的字段中
@notEmptyMinSize(size=10) private String secPhoneNumber;
-
创建自定义validation类
@Documented @Constraint(validatedBy = notEmptyMinSize.class) @Target( { ElementType.METHOD, ElementType.FIELD }) @Retention(RetentionPolicy.RUNTIME) public @interface notEmptyMinSize { int size() default 10; Class>[] groups() default {}; Class extends Payload>[] payload() default {}; }
-
将您的业务逻辑添加到validation中
public class NotEmptyConstraintValidator implements ConstraintValidator
{ private NotEmptyMinSize notEmptyMinSize; @Override public void initialize(notEmptyMinSize notEmptyMinSize) { this.notEmptyMinSize = notEmptyMinSize } @Override public boolean isValid(String notEmptyField, ConstraintValidatorContext cxt) { if(notEmptyField == null) { return true; } return notEmptyField.length() == notEmptyMinSize.size(); } }
现在,您可以在具有不同大小的多个字段中使用此validation。
这是另一个例子,你可以按照例子
以下模式工作
- @Pattern(正则表达式= “^(\ S * | [A-ZA-Z0-9] {10})$”)
- @Pattern(正则表达式= “^(\ S * | \ d {10})$”)
// ^ # Start of the line // \s* # A whitespace character, Zero or more times // \d{10} # A digit: [0-9], exactly 10 times //[a-zA-Z0-9]{10} # az,AZ,0-9, exactly 10 times // $ # End of the line
参考: 仅在字段不为空时才进行validation