• 使用validwhen设计复杂的Struts表单验证


    通过Struts 1.2提供的validwhen 验证器可以轻松的创建更加复杂灵活的表单验证。 比如说,我们要验证用户两次输入的密码是否相同,或是只有当用户填写表单项“姓氏”时,表单项“名字”才是必须的。 validwhen 需要声明一个叫test的var字段,这个变量的值是一个布尔型的表达式,比如:     <var-name>test</var-name>   

     <var-value>((orderLines[].partNumber == null) or (*this* != null))</var-value>

    当布尔型表达式返回true时,验证才会成功。

    下边是允许发入该表达式的一些元素: 单引号或双引号括起来的字符串十进制、十六进制或八进制表示的整形字面量null 表示没有输入的空串可以使用表单里的任何字段名字,如 customerAge显式引用的索引字段,如childLastName[2]隐式引用的索引字段,如childLastName[],表示使用与该字 段相同的索引字面量 *this* 表示当前被验证的表单 例: 下边这段代码表示:只有当sendNewsletter字段为空,或该字段emailAddress不为空时,该字段才有效

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

    <arg0 key="userinfo.emailAddress.label"/>       

    <var>         

    <var-name>test</var-name>        

      <var-value>((sendNewsletter == null) or (*this* != null))</var-value>     

       </var>     

    </field>

    下边这个例子表示,只有相应的partNumber存在时,字段quantity才是必须的 下边这个例子表示,只有相应的partNumber存在时,字段quantity才是必须的     <field property="quantity" indexedListProperty="orderLines" depends="validwhen">     

    <arg0 key="orderform.quantity.label"/>       

    <var>         

    <var-name>test</var-name>         

    <var-value>((orderLines[].partNumber == null) or (*this* != null))</var-value>      

      </var>     

    </field>下边这个例子表示,如果输入身高小于60英寸,则不能做nbaPointGuard 下边这个例子表示,如果输入身高小于60英寸,则不能做nbaPointGuard     <field property="nbaPointGuard" depends="validwhen">     

    <arg0 key="careers.nbaPointGuard.label"/>       

    <var>         

    <var-name>test</var-name>         

    <var-value>((heightInInches >= 60) or (*this* == null))</var-value>       

    </var>     

    </field>

    当验证条件过多时,要这个样子:

                        <var-name>test</var-name>

                        <var-value>((((username != '0') and (username != null)) and (*this* != null)) and (*this* != '0'))</var-value>

    记住在action中写入Input

            <action path="/A"
                type="c"

                name="AForm" scope="request" input="/b.do">

    表示出错了,会回到input的地方。

  • 相关阅读:
    Addrinfo and Getaddrinfo
    网络编程原始套接字
    《福布斯》:IT人最痛苦!?
    Git安装使用笔记 [转]
    Linux下Sniffer程序的实现
    HttpWebRequest post提交XMl参数请求,
    Flex学习记录(一)——MXML基本知识
    利用System.Net.Mail 的SmtpClient发送邮件
    Flex开源开发框架
    C# 手动/自动保存图片
  • 原文地址:https://www.cnblogs.com/baoguo/p/1390953.html
Copyright © 2020-2023  润新知