struts2——输入校验

本文详细介绍了Struts2框架中的校验机制,包括如何配置校验规则、使用各种预定义的校验器,以及如何自定义校验规则。同时,文章也提到了如何利用注解简化校验配置,并介绍了如何在页面上显示校验失败的信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

校验文件的命名为XXXAction-validation.xml,其中的XXXAction就是我们需要指定校验规则的类,校验规则如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 指定校验配置文件的DTD信息 -->
<!DOCTYPE validators PUBLIC 
    "-//Apache Struts//XWork Validator 1.0.3//EN"
    "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<!-- 校验文件的根元素 -->
<validators>
    <!-- 校验Action的指定属性 -->
    <field name="属性值">
        <!-- 指定该属性必须满足的规则 -->
        <field-validator type="规则">
            <param name="trim">true</param>
            <param name="min">最小值</param>
            <param name="max">最大值</param>
            <message key="失败时,国际化文件中的消息"/>
        </field-validator>
        <!-- 指定该属性必须匹配正则表达式 -->
        <field-validator type="regex">
            <param name="regex"><![CDATA[(\w{4,25})]]></param>
            <message key="国际化文件中的名称"/>
        </field-validator>
    </field>
</validators>

上面为字段校验器配置风格,struts2还支持非字段校验器还有短路校验器,非字段校验器的使用和目的和字段校验器没有不同,短路校验器需要在:

<field-validator type="regex" short-circuit="true">
...
</field-validator>

显式的将short-circuit值设置为true,从而当该校验器失效时,其他校验器根本不会工作。下面介绍几种常用的校验器:

<field-validator type="required" ><!--必填校验器--></field-validator>
由@RequiredStringValidator进行代替

<field-validator type="requiredstring" ><!--必填字符串校验器--></field-validator>
由@RequiredStringValidator进行代替

<field-validator type="int" ><!--必填整数校验器,可配合mix、max--></field-validator>
由@IntRangeFieldValidator进行代替

<field-validator type="date" ><!--必填日期校验器,可配合min、max--></field-validator>
由@DateRangeFieldValidator进行代替

<field-validator type="expression" >
<!--基于OGNL表达式、和ValueStack求值-->
    <param name="expression">...</param>
</field-validator>

<field-validator type="email" ><!--邮件校验器--></field-validator>

<field-validator type="url" ><!--URL校验器--></field-validator>

<field-validator type="visitor" >
<!--复合属性校验器,用于对Action中比较复杂的属性进行校验-->
    <param name="context">专门用于该复合属性校验的校验文件</param>
</field-validator>

<field-validator type="conversion" >
<!--转换校验器-->
    <param name="repopulateField">true(转换失败后原页面保留错误输入)</param>
</field-validator>

<field-validator type="stringlength" >
<!--字符串长度校验器-->
    <param name="minLength">4</param>
    <param name="maxLength">20</param>
</field-validator>

<field-validator type="regex" >
<!--正则表达式校验器-->
    <param name="regex"><![CDATA[(\XXX)]]></param>
</field-validator>
由@RegexFieldValidator进行校验

校验失败之后通过<s:fielderror/>来在jsp页面上输出上传失败的信息
ps.注解需要加在对应属性的setter方法上,这一点和SpringMVC直接加在属性上有所不同
如果上面已经提供的检验器还不能满足您的需求,可以通过重写validate()方法和validateXXX()方法进行自定义的检验其中XXX为方法名,检验的结果通过addFieldError方法进行添加
结合struts2数据转换,可以发现struts2的处理流程是:
流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值