2

我正在尝试使用 Struts2 Annotations 来验证 bean 的某些字段。在这种情况下,我想使用正则表达式验证电话号码字符串。

我找到了@RegexFieldValidator注释,所以我将其包含在我的课程中并进行了一些测试:

  @RequiredStringValidator(message="Phone required.") 
  @RegexFieldValidator( message="Invalid Phone",
    expression="\\([\\d][\\d][\\d]\\) [\\d][\\d][\\d]-[\\d][\\d][\\d][\\d]")
  public void setPhone(String phone) {
    this.phone = phone;
  }

但是,正则表达式不起作用。我什至尝试使用"\d{9}""[0-9]{9}"。即使使用 type=ValidatorType.SIMPLE。

必需的 StringValidator 正常工作......这里发生了什么?是否可以正确使用此验证器?

提前致谢

4

2 回答 2

0

尝试

@RegexFieldValidator(type=ValidatorType.FIELD, message="Invalid Phone",
    expression="\\([0-9][0-9][0-9]\\)\\s[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]")
于 2013-04-05T11:27:02.063 回答
0

Struts 2 团队已经修复了这个错误,现在它在 2.3.14 版本中可以正常工作。

<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-core</artifactId>
  <version>2.3.14</version>
</dependency>

我尝试了两种情况:

1.现场验证:

AccountAction.java

regexFields = {
        @RegexFieldValidator(fieldName="phone2",
                             regexExpression="\\d{3}-\\d{3}-\\d{4}",
                             message="Invalid Phone")}

2. 访客字段验证:

AccountAction.java

visitorFields = { @VisitorFieldValidator(fieldName="account", message="[Error]", appendPrefix=true) }

账户.java

@RequiredStringValidator(message="Phone required.") @RegexFieldValidator(message="Invalid Phone", regexExpression="\d{3}-\d{3}-\d{4}") public void setPhone(String phone) { this.phone = phone; }

于 2013-04-26T10:43:52.300 回答