Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts2注释使用RegexFieldValidator验证字符串_Java_Regex_Validation_Struts2 - Fatal编程技术网

Java Struts2注释使用RegexFieldValidator验证字符串

Java Struts2注释使用RegexFieldValidator验证字符串,java,regex,validation,struts2,Java,Regex,Validation,Struts2,我试图使用Struts2注释来验证bean的一些字段。 在本例中,我想用正则表达式验证电话号码字符串 我找到了@RegexFieldValidator注释,因此我将其包含在课堂中并进行了一些测试: @RequiredStringValidator(message="Phone required.") @RegexFieldValidator( message="Invalid Phone", expression="\\([\\d][\\d][\\d]\\) [\\d][\\d

我试图使用Struts2注释来验证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工作正常…这里发生了什么? 是否可以正确使用此验证器

提前感谢

尝试

@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]")

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

<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-core</artifactId>
  <version>2.3.14</version>
</dependency>
2。访客字段验证:

AccountAction.java

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

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}”)
公用无效设置电话(字符串电话){
this.phone=电话;

} /代码>

您也可以考虑使用一个较短的正则表达式。您确定“<代码>电话< /代码>变量是否已被设置,而不是<代码> null <代码> Struts版本?版本2.3.12破坏了注释支持,这在版本2.3.14中得到了改进(现在正在表决)电话变量不是空的,我正在使用Struts版本2.3.12。@aloplop85:现在您可以将Struts2版本更新为2.3.14。我在这里写下电话号码:在验证帐户bean时,任何东西都被接受为“电话”。@RequiredStringValidator工作正常。如果
验证
拦截器不在堆栈上,请将其放在堆栈上。我使用的是“defaultStack”,因此默认情况下,“验证”拦截器包含在堆栈中。另外,其他验证也运行良好。可能您需要getter和setter,以及
account.phone的注释。getter和setter已经放置在“private String phone”;public String getPhone(){return phone;}@RequiredStringValidator(message)中=“需要电话。”)@RegexFieldValidator(type=ValidatorType.FIELD,message=“Invalid Phone”,expression=“\([0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]”公用无效设置电话(字符串电话){this.Phone=Phone;}