Struts2 Annotations使用RegexFieldValidator验证String

时间:2013-04-05 10:42:03

标签: java regex validation struts2

我正在尝试使用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工作正常......这里发生了什么? 是否可以正确使用此验证器?

提前致谢

2 个答案:

答案 0 :(得分: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]")

答案 1 :(得分: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) }

Account.java

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