基于XML配置方式实现对action的所有方法进行输入校验

 

使用基于 XML 配置方式实现输入校验时, Action 也需要继承 ActionSupport 并且提供校验文件,校验文件和 action 类放在同一个包下,文件的取名格式为: ActionClassName-validation.xml ,其中 ActionClassName action 的简单类名, -validation 为固定写法。如果 Action 类为 cn.itcast.UserAction ,那么该文件的取名应为: UserAction-validation.xml 下面是校验文件的模版:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
<validators>
    <field name=" username ">
        <field-validator type=" requiredstring ">
            <param name="trim">true</param>
            <message> 用户名不能为空 !</message>
        </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 校验文件时 , 如果出现不了帮助信息 , 可以按下面 方式解决:
windwos->preferences->myeclipse->files and editors->xml->xmlcatalog
add , 在出现的窗口中的 location 中选 File system , 然后在 xwork-2.1.2 解压目录的 src\java 目录中选择 xwork-validator-1.0.3.dtd, 回到设置窗口的时候不要急着关闭窗口 , 应把窗口中的 Key Type 改为 URI Key 改为 http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd
 
struts2提供的校验器列表
 
系统提供的校验器如下:
required ( 必填校验器 , 要求 field 的值不能为 null)
requiredstring ( 必填字符串校验器 , 要求 field 的值不能为 null, 并且长度大于 0, 默认情况下会对字符串去前后空格 )
stringlength ( 字符串长度校验器 , 要求 field 的值必须在指定的范围内 , 否则校验失败 ,minLength 参数指定最小长度 ,maxLength 参数指定最大长度 ,trim 参数指定校验 field 之前是否去除字符串前后的空格 )
regex ( 正则表达式校验器 , 检查被校验的 field 是否匹配一个正则表达式 .expression 参数指定正则表达式 ,caseSensitive 参数指定进行正则表达式匹配时 , 是否区分大小写 , 默认值为 true)
int ( 整数校验器 , 要求 field 的整数值必须在指定范围内 ,min 指定最小值 ,max 指定最大值 )
double ( 双精度浮点数校验器 , 要求 field 的双精度浮点数必须在指定范围内 ,min 指定最小值 ,max 指定最大值 )
fieldexpression ( 字段 OGNL 表达式校验器 , 要求 field 满足一个 ognl 表达式 ,expression 参数指定 ognl 表达式 , 该逻辑表 达式基于 ValueStack 进行求值 , 返回 true 时校验通过 , 否则不通过 )
email ( 邮件地址校验器 , 要求如果 field 的值非空 , 则必须是合法的邮件地址 )
url ( 网址校验器 , 要求如果 field 的值非空 , 则必须是合法的 url 地址 )
date ( 日期校验器 , 要求 field 的日期值必须在指定范围内 ,min 指定最小值 ,max 指定最大值 )
conversion ( 转换校验器 , 指定在类型转换失败时 , 提示的错误信息 )
visitor ( 用于校验 action 中的复合属性 , 它指定一个校验文件用于校验复合属性中的属性 )
expression (OGNL 表达式校验器 ,expression 参数指定 ognl 表达式 , 该逻辑表达式基于 ValueStack 进行求值 , 返回 true 时校验通过 , 否则不通过 , 该校验器不可用在字段校验器风格的配置中 )
 
校验器的使用例子
 
required  必填校验器
<field-validator type="required">
       <message> 性别不能为空 !</message>
</field-validator>
requiredstring  必填字符串校验器
<field-validator type="requiredstring">
       <param name="trim">true</param>
       <message> 用户名不能为空 !</message>
</field-validator>
stringlength 字符串长度校验器
<field-validator type="stringlength">
<param name="maxLength">10</param>
<param name="minLength">2</param>
<param name="trim">true</param>
<message><![CDATA[ 产品名称应在 2-10 个字符之间 ]]></message>
</field-validator>
 
email 邮件地址校验器
<field-validator type="email">
<message> 电子邮件地址无效 </message>
</field-validator>
regex 正则表达式校验器
<field-validator type="regex">
     <param name="expression"><![CDATA[^1[358]\d{9}$]]></param>
     <message> 手机号格式不正确 !</message>
</field-validator>
 
int :整数校验器
<field-validator type="int">
<param name="min">1</param>
<param name="max">150</param>
<message> 年龄必须在 1-150 之间 </message>
</field-validator>
字段 OGNL 表达式校验器
<field name="imagefile">
<field-validator type="fieldexpression">
<param name="expression"><![CDATA[imagefile.length() <= 0]]></param>
<message> 文件不能为空 </message>
</field-validator>
</field>

你可能感兴趣的:(action)