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