Struts1.x系列教程(11):Validator验证框架高档利用

在《Struts1.x系列教程(10):Validator验证框架入门》一文中给出的例子中的name、age和email都是简略的属性,如果是嵌套的属性(也就是一个属性的数据类型是另外一个带有属性的类),可以应用圆点(.)符号来造访。如我们可以通过设置<field>元素的property属性值为“employee.salary”来验证employee属性中的salary属性。

    如果要验证的索引属性,我们可以应用 <field>元素的indexedListProperty属性来指定这个索引属性,如下面代码如示:

<field indexedListProperty="items" depends=>  </field>

    在应用上述配置代码后,Validator框架将会按着depends属性中的束缚来验证items属性的每一个值。我们还可以将property和indexedListProperty配合应用,如下面代码所示:

<field indexedListProperty="items"  property="employee.age"  depends=>  </field>

    Validator框架将根据 上述的配置代码来验证items属性中的每一项的employee.age属性。

    二、应用常量和变量

    1. 常量

    在《Struts1.x系列教程(10):Validator验证框架入门》一文中的name属性应用了mask进行验证。这个mask实际上代表了一个正则表达式。但如果在validator.xml文件中有很多个处所需要 用到这个正则表达式,那就它就会在很多处所重复 。为此,我们可以应用常量来避免这种事情产生。

    常量分为全局常量和局部常量。

    (1)全局常量

    全局常量可以被用在validator.xml中定义的所有form中。我们可以应用 <global>元素来配置全局常量。为了配置全局常量,将如下的内容放到第一个<formset>元素的前面。

  <global>
      
<constant>
          
<constant-name>mask</constant-name>
          
<constant-value> ^[a-zA-Z0-9]*$ </constant-value>
      
</constant>
  
</global>
  
<formset>

    (2)局部常量

    局部常量需要 放到<formset>元素的起头地位(根据 DTD的定义,局部常量只能放到这里,而全局常量可以放在第一个<formset>元素的前面,也可以放到<formset>的后面)。如下面的代码所示:

  <formset>
      
<constant>
          
<constant-name>mask</constant-name>
          
<constant-value> ^[a-zA-Z0-9]*$ </constant-value>
      
</constant>
      
<form name="firstValidatorForm"> 
       
  
</formset>

    我们可以编写如下的代码来应用 mask常量:

<var>
    <var-name>mask</var-name>
    <var-value> ${mask}</var-value>
</var>

    2. 变量

    Validator框架通过<var>元素来定义变量。变量将作为<field>的子元素被应用。首要向depends属性值(如mask)以及<msg>的差错信息传递数据。如下面的代码通过变量required将“姓名”传递给了差错信息的第一个参数{0}.

<field property="name"  depends="required ">
    <msg name="required" key="error.name.blank" />
    <arg name="required" key="${var:required}" position="0" resource="false" />
    <var>
        <var-name>required</var-name>
       
<var-value>姓名</var-value>
   
</var>
</field>

三、客户端验证

    应用 Validator框架的利益之一就是可以很容易地将服务端验证变为客户端验证(Script验证)。为了完成这一转换,我们只需要 修正两个处所。现在就拿《Struts1.x系列教程(10):Validator验证框架入门》中的firstValidator.jsp为例来阐明要修正什么。

    首先,在firstValidator.jsp中的任何处所(当然,任何处所指的是客户端代码区,并不包孕<%……%>和<%——…… ——%>所包孕的内容)添加如下的<html:javascript>标签:

<html:javascript formName="firstValidatorForm"/>

    然后在<html:form>标签中参加如下的属性:

onsubmit="return validateFirstValidatorForm(this);"

    现在再运行firstValidator.jsp,如果输入差错,IE就会直接弹出差错信息对话框。我们查看客户端源代码就会创造,在源代码中多了很多Script代码。实际上,当参加 <html:javascript>标签后,在运行JSP页面时,Servlet引擎就会将Validator框架中JavaScript版本的预定义验证代码连同HTML代码都发送到客户端。这些JavaScript代码中有一个入口函数,这个函数的名称前缀为validate,后面是首字母大写的Form名。在<html:form>标签中的onsubmit事件中调用这个入口函数就可以通过JavaScript代码来验证客户端录入的数据了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值