[英]Struts 2.5.12 / 2.5.13 - Validations stopped working after struts upgrade
I have upgraded Struts on one of the project from 2.3.x to 2.5.12 (tried with 2.5.13 also) and I see that after this upgrade no validations happening.我已经将其中一个项目的 Struts 从 2.3.x 升级到 2.5.12(也尝试了 2.5.13),我看到在这次升级之后没有进行验证。
I have in JSP:我在 JSP 中有:
<s:form action="details">
<s:textfield name="fullName" size="20" label="full.name" requiredLabel="true" />
<s:checkbox id="terms" name="terms" requiredLabel="true" />
<s:submit name="submit" id="submit" value="Submit" />
</s:form>
Action name is TestStrutsAction.java
.动作名称是
TestStrutsAction.java
。 My validation xml TestStrutsAction-validation.xml
looks like:我的验证 xml
TestStrutsAction-validation.xml
看起来像:
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="fullName">
<field-validator type="requiredstring">
<message key="fullname.error"/>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[^[0-9A-Za-z&\-./\s]*$]]></param>
<message key="fullname.invalid"/>
</field-validator>
</field>
<field name="terms">
<field-validator type="fieldexpression">
<param name="expression">terms eq true</param>
<message key="terms.error"/>
</field-validator>
</field>
</validators>
I have overridden validate in my action class as:我在我的动作类中将验证覆盖为:
@Override
public void validate() {
super.validate();
LOG.debug(getFieldErrors());
}
I tried debugging and I do not see any field errors in the validate
method of action class.我尝试调试,但在操作类的
validate
方法中没有看到任何字段错误。
Does anyone know why I have this issue after upgrade?有谁知道为什么我升级后会出现这个问题? Thanks
谢谢
The issue was with the regular expression used in the validation xml file.问题在于验证 xml 文件中使用的正则表达式。 I have a regex in validation xml as:
我在验证 xml 中有一个正则表达式:
<field-validator type="regex">
<param name="expression"><![CDATA[^[0-9A-Za-z&\-./\s]*$]]></param>
<message key="fullname.invalid"/>
</field-validator>
I changed expression
to regexExpression
as below and it started working.我将
expression
更改为regexExpression
,如下所示,它开始工作。
<field-validator type="regex">
<param name="regexExpression"><![CDATA[^[0-9A-Za-z&\-./\s]*$]]></param>
<message key="fullname.invalid"/>
</field-validator>
Not sure why other validations didn't work with the wrong regex, but after changing it all the validations are working.不知道为什么其他验证不能使用错误的正则表达式,但是在更改它之后所有验证都可以正常工作。
This might help someone who may have similar issue :)这可能会帮助可能有类似问题的人:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.