strut2 学习之验证框架二编写验证规则

来源:互联网 发布:手机视频网站源码 编辑:程序博客网 时间:2024/05/18 02:26

编写验证规则

我们有三种编写验证规则的方式:
1.  每一个Action 类:验证文件名为ActionName-validation.xml (其中ActionName就是你的类名).
2.每一个Action 别名:验证文件名为ActionName-alias-validation.xml(其中ActionName就是你的类名).
3.继承或者实现了Action接口的类:XWork 将搜索这个action 的继承关系树,找到Action 的父类和接口默认的验证器.

下面是一个简单的验证规则文件示例SimpleAction-validation.xml:
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN""http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"><validators>  <field name="bar">      <field-validator type="required">          <message>You must enter a value for bar.</message>      </field-validator>      <field-validator type="int">          <param name="min">6</param>          <param name="max">10</param>          <message>bar must be between ${min} and ${max}, current value is ${bar}.</message>      </field-validator>  </field>  <field name="bar2">      <field-validator type="regex">          <param name="expression">[0-9],[0-9]</param>          <message>The value of bar2 must be in the format "x, y", where x and y are between 0 and 9</message>     </field-validator>  </field>  <field name="date">      <field-validator type="date">          <param name="min">12/22/2002</param>          <param name="max">12/25/2002</param>          <message>The date must be between 12-22-2002 and 12-25-2002.</message>      </field-validator>  </field>  <field name="foo">      <field-validator type="int">          <param name="min">0</param>          <param name="max">100</param>          <message key="foo.range">Could not find foo.range!</message>      </field-validator>  </field>  <validator type="expression">      <param name="expression">foo lt bar </param>      <message>Foo must be greater than Bar. Foo = ${foo}, Bar = ${bar}.</message>  </validator></validators>

这个文件为SimpleAction配置了一些验证器.验证器(属性验证器)必须有一个"type" 属性,这个属性值引用了我们在ValidatorFactory中注册的验证器的名称.Validator 元素也可以有param元素,这个元素name  和 value 两个属性,我们可以设置任意的参数值.通常我们可以在相应的验证器类中找到属性的名称.嘿嘿.

注意:
在这里,Action Alias 引用的是struts2配置文件中的action的名称, 通常,name 属性跟方法名是一样的,但是也不绝对.


原创粉丝点击