您的位置:首页 > 编程语言 > Java开发

Struts2:输入校验-基于XML配置方式实现

2018-03-30 00:09 429 查看
使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件的取名格式为:ActionClassName-validation.xml,其中ActionClassName为action的简单类名,-validation为固定写法。如果Action类为cn.itcast.UserAction,那么该文件的取名应为:UserAction-validation.xml,同时需要在struts配置文件中要有名为input的视图。

在input的视图上用 <s:fielderror></s:fielderror> 显示错误信息

校验文件的模板: 可以在apps例子中复制一个
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"                                                        //用版本1.0.3
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

<validators>
<field name="username">
<field-validator type="requiredstring">                                     //requiredstring是必填字符串校验器
<param name="trim">true</param>                               //默认为true
<message>用户名不能为空!</message>
</field-validator>
</field>

<field name="mobile">
<field-validator type="requiredstring">
<message>手机号不能为空!</message>
</field-validator>
<field-validator type="regex">
<param name="expression"><![CDATA[^1[358]\d{9}$]]></param>
<message>手机号格式不正确!</message>                                     //<![CDATA[]]>将内部内容作为普通文本处理
</field-validator>
</field>
</validators>

<field>指定action中要校验的属性, <field-validator>指定校验器,上面指定的校验器requiredstring是由系统提供的,系统提供了能满足大部分验证需求的校验器,这些校验器的定义可以在xwork-2.x.jar中的com.opensymphony.xwork2.validator.validators下的default.xml中找到。
注:根据需求,在系统中找相对应的校验器

<message>为校验失败后的提示信息。如果需要国际化,可以为message指定key属性,key的值为资源文件中的key。在这个校验文件中,对action中字符串类型的username属性进行校验,首先要求调用trim()方法去掉空格,然后判断用户名是否为空。

当校验文件的取名为ActionClassName-validation.xml时,会对action中的所有处理方法实施输入验证。如果你只需要对action中的某个action方法实施校验,那么,校验文件的取名应为:ActionClassName-ActionName-validation.xml,其中ActionName为struts.xml中action的名称。


基于XML校验的一些特点:

当为某个action提供了ActionClassName-validation.xml和ActionClassName-ActionName-validation.xml两种规则的校验文件时,系统按下面顺序寻找校验文件:

1.ActionClassName-validation.xml

2.ActionClassName-ActionName-validation.xml

系统寻找到第一个校验文件时还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有校验规则汇总,然后全部应用于action方法的校验。如果两个校验文件中指定的校验规则冲突,则只使用后面文件中的校验规则。

当action继承了另一个action,父类action的校验文件会先被搜索到。然后会应用所有检验规则的总和
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: