关于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的方式。当时第一次比较晕,把第二节配成想要调用的方法,结果老是解析不了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值