正文

Validator 验证 - 用正则表达式验证表单字段2007-03-13 11:00:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hurongliang/23924.html

分享到:

mask验证规则提供了基于正则表达式的验证机制,如:

<form name="ValidationTestForm">

    <!-- Validate Social Security Number -->

    <field property="ssn"

            depends="required,mask">

        <arg key="prompt.ssn"/>

        <var>

            <var-name>mask</var-name>

            <var-value>^[0-9]{3}-[0-9]{2}-[0-9]{4}$</var-value>

        </var>

    </field>

</form>

正则表达式使用通用符号描述并解析文本,使用它你可以验证数据是否符合指定的格式。

STRUTS框架通过mask验证规则使用正则表达式。可以在var元素中指定正则表达式。

<var>

    <var-name>mask</var-name>

    <var-value>^[0-9]{3}-[0-9]{2}-[0-9]{4}$</var-value>

</var>

name属性必须是maskvalue指定要使用的正则表达式。如果匹配则通过验证,否则验证失败。

如果你使用struts1.1及以后的版本,那么正则表达式必须以“^”开头,以“$”结尾。

 

 

 


举例:

^[0-9]{3}-[0-9]{2}-[0-9]{4}$

理解如下:

开头一个开头符号(^),,接着是三个09的字符({3}),接着是连接符号,接着是两个09的字符([0-9]),接着是一个连接符号(-),接着是四个09的字符([0-9]),,接着是一个结束符号($).

n   requiredif:

struts1.1Z中,如果一个字段的验证依赖于另一个字段,可用requiredif验证规则。

举例如下:

<!-- zipCode is required if city is null or state is null -->

<field property="zipCode" depends="requiredif">

    <arg key="prompt.zipCode"/>

    <var>

        <var-name>field[0]</var-name>

        <var-value>city</var-value>

    </var>

    <var>

        <var-name>fieldTest[0]</var-name>

        <var-value>NULL</var-value>

    </var>

    <var>

        <var-name>field[1]</var-name>

        <var-value>state</var-value>

    </var>

    <var>

        <var-name>fieldTest[1]</var-name>

        <var-value>NULL</var-value>

    </var>

    <var>

        <var-name>fieldJoin</var-name>

        <var-value>OR</var-value>

    </var>

</field>

citystate的值为空或不存在时,zipCode不能为空。

客户端不能进行requiredif验证

 

 


struts1.1前要实现这样的 功能必须自己写代码进行验证。

field[i]对应的var-value值代表一个表单属性:

<var>

    <var-name>field[0]</var-name>

    <var-value>property name</var-value>

</var>

fieldTest[i]代表测试类型:

<var>

    <var-name>fieldTest[i]</var-name>

    <var-value>test type</var-value>

</var>

测试类型有以下三种:

NULL

字段为NULL或空字符串

NOTNULL

字段不为NULL或空字符串

EQUAL

字段值为一个指定的值

 

如果测试类型为EQUAL,则还需定义一个元素fieldValue[i]:

<var>

    <var-name>fieldValue[i]</var-name>

    <var-value>literal value</var-value>

</var>

如果这个属性是一个数字的,则字面值将被转换为数值。否则字面值将当作一个字符串。

如果依赖多个字段,则须用fieldJoin变量确定这多个字段的逻辑关系:

<var>

    <var-name>fieldJoin</var-name>

    <var-value>logical operator</var-value>

</var>

合法的value值为ANDORAND表示所有依赖的字段都必须符合fieldTest规定的类型时,要验证的数据不为空;OR表示所依赖的字段有一个符合要求时要验证的数据不为空。

struts1.2中,requiredif已被validwhen代替。

n   validwhen

如下例表示当下列事实发生时,zipCode合法有效:

1.        citystate属性不为空

2.        zipCode不为空

<form name="AddressForm">

  <field property="zipCode" depends="validwhen">

      <arg key="prompt.zipCode"/>

      <var>

          <var-name>

              test

          </var-name>

          <var-value>

              (((city != null) and (state != null)) or (*this* != null))

          </var-value>

      </var>

  </field>

<form name="AddressForm">

validwhenrequiredif功能更强大。requiredif表示“如果。。。这个字段不为空”。validwhen表示“当。。。时这个字段有效”。

当你使用这个验证时,请确保验证结果能为 true

 

 

 


*this*符号表示要验证的字段zipCode

阅读(4960) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册