首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >@Size注释以验证字段

@Size注释以验证字段
EN

Stack Overflow用户
提问于 2016-07-06 13:03:18
回答 2查看 23.7K关注 0票数 1

我需要验证一个字段- secPhoneNumber (辅助电话#)。我需要使用JSR验证满足以下条件

  • 该字段可以为空/空。
  • 否则,数据必须长度为10。

我试过下面的代码。该字段总是在表单提交时得到验证。如何在字段不是空的情况下才验证字段的长度为10?

弹簧表:

代码语言:javascript
复制
<form:label path="secPhoneNumber">
Secondary phone number <form:errors path="secPhoneNumber" cssClass="error" />
</form:label>
<form:input path="secPhoneNumber" />

豆子

代码语言:javascript
复制
@Size(max=10,min=10)
    private String secPhoneNumber;
EN

回答 2

Stack Overflow用户

发布于 2016-07-07 11:05:35

为了提高可读性,为了在以后的时间里使用,我将创建我的自定义验证类,您应该只遵循以下步骤:

  1. 将新的自定义注释添加到字段中。 @notEmptyMinSize(size=10)私有字符串secPhoneNumber;
  2. 创建自定义验证类 @validatedBy=notEmptyMinSize.class @Target( { ElementType.METHOD,ElementType.FIELD }) @RetentionPolicy.RUNTIME公共@接口notEmptyMinSize { int size()默认10;Class[]组()默认{};Class<?扩展Payload>[]有效载荷()默认{};}
  3. 将业务逻辑添加到验证中 公共类NotEmptyConstraintValidator实现ConstraintValidator {私有的NotEmptyMinSize notEmptyMinSize;@Override ( notEmptyMinSize notEmptyMinSize) { this.notEmptyMinSize =notEmptyMinSize}@覆盖公共布尔isValid(String notEmptyField,ConstraintValidatorContext cxt) { if(notEmptyField == null) {返回真;}返回notEmptyField.length() == notEmptyMinSize.size();}}

现在,您可以在几个不同大小的字段中使用此验证。

下面是另一个例子,您可以遵循示例

票数 2
EN

Stack Overflow用户

发布于 2016-07-07 03:01:41

以下模式起作用

  1. @Pattern(regexp=“^(\s*x-a-Za-Z0-9{10})$”)
  2. @Pattern(regexp=“^(\s*\d{10})$”)

代码语言:javascript
复制
// ^             # 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}    # a-z,A-Z,0-9, exactly 10 times
// $             # End of the line

参考资料:只有当字段不是空时才验证

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38224733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档