今天在开发一个用户登陆验证时,发现一个非常有意思的问题,我的LoginAction-Validation.xml中一开始这样写:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd" > <validators> <field name="login.username"> <field-validator type="required"> <message key="required" /> </field-validator> </field> <field name="login.password"> <field-validator type="required"> <message key="required" /> </field-validator> </field> </validators>
其它都正常,结果在Login页面出现FreeMarker template error!的错误:(见附件)
问题出现在引用国际化时,出现此内情况,如果改为:<message>...........</message>,将正常.
仔细排查后,将验证文件改为:之后正常.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd" > <validators> <field name="login.username"> <field-validator type="required"> <message>${getText("required")}</message> </field-validator> </field> <field name="login.password"> <field-validator type="required"> <message>${getText("required")}</message> </field-validator> </field> </validators>
注:我开发这个小程序开发过程中,尝试用到了客户端校验,也就是要在提交页面的form标签中加入 validate="true".
官方文档中对此并没有作出申明,可能是小bug.
我想可能在实际开发中,并不常用到客户端验证.