关于struts2验证文件的些写法和fieldexpression

本人很久前学struts2时遇到些问题,希望写出来对大家有所帮助。struts2的校验框架既支持服务器端也支持客服端的校验,但更多是用在服务器端(客服端支持太弱)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<!-- 验证的两种方式 -->
<!-- <validator type="requiredstring">
<param name="fieldName">username</param>
<message>用户名不能为空</message>
</validator>
<validator type="stringlength">
<param name="fieldName">username</param>
<param name="minLength">3</param>
<param name="maxLength">8</param>
<message>用户名必须在${minLength}和${maxLength}之间</message>
</validator>-->
<!-- fiel表示验证字段级别,和上面的可以同时存在 -->
<field name="username">
<field-validator type="requiredstring" short-circuit="true">
<param name="trim">true</param>
<message>用户名必须填</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>用户名必须在${minLength}和${maxLength}之间</message>
</field-validator>
</field>
<field name="password">
<field-validator type="requiredstring">
<message>密码必填</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>密码必须在${minLength}和${maxLength}之间</message>
</field-validator>
</field>
<field name="re_password">
<field-validator type="requiredstring">
<message>重复密码必填</message>
</field-validator>
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message>密码必须在${minLength}和${maxLength}之间</message>
</field-validator>
<field-validator type="fieldexpression">
<param name="expression">(re_password eq password)</param>
<message>两次密码不一致</message>
</field-validator>
</field>
<field name="age">
<field-validator type="required">
<message>年龄必填</message>
</field-validator>
<field-validator type="int">
<param name="min">1</param>
<param name="max">100</param>
<message>年龄必须在${min}和${max}之间</message>
</field-validator>
</field>
<field name="graduation">
<field-validator type="required">
<message>毕业时间必填</message>
</field-validator>
<field-validator type="date">
<param name="min">1987-01-01</param>
<param name="max">2007-01-01</param>
<message>生日必须在${min}和${max}之间</message>
</field-validator>
<field-validator type="fieldexpression">
<param name="expression">(graduation >birthday)</param>
<message>毕业时间不能大于出生时间</message>
</field-validator>
</field>
</validators>
1.我们在写校验文件时最好根据它定义的DTD文件和提供的源代码进行编码,可以找到default.xml文件。他里面列出了相应的校验方式和对应的类。在用fieldexpression这种类型来校验时表示验证的是个表达式语言,其实是OGNL语言。下面的 <param name="expression">(graduation >birthday)</param>就说明了此道理。expression也说明你用的是表达式校验。
2.有时我们虽然定义了验证文件,但是有些方法不想让它校验可以用@SkipValidation的注解方式跳过验证(不过此注解却对action里定义的验证跳不过)。
3.如果一个action定义了多个方法,校验文件用该:XXXAction-配置的action名字-validation.xml的方式。当时第一次比较晕,把第二节配成想要调用的方法,结果老是解析不了。

你可能感兴趣的:(xml,框架)