首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Sturts2应验框架

2012-11-11 
Sturts2验证框架Sturts2内建验证器名称参数功能1. required没有检验值非空2. requiredstringtrim(默认为tr

Sturts2验证框架
Sturts2内建验证器

   名称                  参数                   功能

1. required没有检验值非空

2. requiredstringtrim(默认为true)检验值非空,并且不是字符串

3. stringlengthtrim(默认为true)验证字符串长度在限定范围内
minLength,maxLength

4. intmin,max验证整数值在参数指定范围内

5. double minInclusive,maxInclusive
minExclusive,maxExclusive  验证浮点值在参数范围内

6. datemin,max验证日期在指定范围内

7. email没有验证电子邮件格式

8. url没有验证URL格式

9. fieldexpressionexpression(必须)根据当前ValueStack解析OGNL表达式.表达式必须返回true或者false决定验证是否成功

10. expressionexpression(必须)与fieldexpression相同,但用在动作级别

11. visitorcontext,appendPrefix将域对象属性(如User)的验证转交给域对象本地的验证声明

12. regxexpression(必须),caseSensitive,trim验证String遵循给定的正则表达式

使用示例
ActionClass-validation.xml (如:Register-validation.xml)

<validators>
 
  <!-- 字段验证器 -->
  <field name="password" >
    <filed-validator type="requiredstring">
<message>You must enter your password</message> 或者 <message key="password.required" />
    </field-validator>
  </field>

  <!-- 动作验证器 -->
  <validator type="expression">
    <param name="expression"> username != password </param>
    <message>Username and password can't be the same. </message>
  </validator>

</validators>   


ActionClass-validation.xml可以对模型类(如:User)使用,也可以对动作(如:Register)使用




使用visitor验证器在域对象级别验证

1.在User-validation.xml中配置User类的验证器

2.在UpdateAccount-validation.xml中使用visitor验证器将UpdateAccount动作的验证任务交还给User

<validators>
  <field name="user">
    <field-validator type="visitor">
      <message> User : </message>
    </field-validator>
  </filed>
</validators>




对Action中的不同方法使用不同验证器

若Update方法中有admin和public两个方法

<action name="adminUpdate" class=com.v.Update" method="admin" >
  <result...>

xml文件写为 Update-Admin-validation.xml

<action name="adminUpdate" class=com.v.Update" method="public" >
  <result...>

xml文件写为 Update-Public-validation.xml

jsp中的写法

<s:fielderror>
  <param> teacher.teacherName </param>
</s:fielderror>

teacher.teacherName需要验证的字段


3.在对象级别上使用验证器
如对Department进行验证
<validators>
    <field name="departmentName">
        <field-validator type="stringlength">
            <param name="minLength">1</param>
            <param name="maxLength">32</param>
            <message>部门名字长度必须在1~64字内</message>
        </field-validator>
    </field>

    <field name="departmentCode">
        <field-validator type="stringlength">
            <param name="minLength">1</param>
            <param name="maxLength">20</param>
            <message> 部门编码长度必须在1~20位内</message>
        </field-validator>
       
        <field-validator type="regex">
            <param name="expression">\d+</param>
            <message>部门编码必须为数字</message>
        </field-validator>
    </field>
</validators>

然后再Action动作中使用visitor转移验证即可
<validators>
    <field name="department">
        <field-validator type="visitor">
            <message></message>
        </field-validator>
    </field>
</validators>
其中 <field name="department"> 为Action公开在ValueStack上的属性


4.使用visitor验证器和域对象验证上下文

UpdateUserActionUpdateUserAdmin-validation.xml

<validators>
  <field name="user">
    <field-validator type="visitor">
      <param name="context">admin</param>此处使用域对象级别上的User-admin-validation.xml定义的验证
      <message> User : </message>
    </field-validator>
  </filed>
</validators>



验证器链短路效应

<field name="password" >
  <field-validator type="stringlength" shot-circuit="true"> //shor-circuit设为true,则当stringlength验证失败时,XXX验证器不会继续执行,节省资源
   ...
  </field-validator>

  <field-validator type="XXX">
   ...
  </field-validator>

热点排行