Java Struts2注释使用RegexFieldValidator验证字符串
我试图使用Struts2注释来验证bean的一些字段。 在本例中,我想用正则表达式验证电话号码字符串 我找到了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
@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;}