struts表单校验

Posted on 2006-03-17 11:41 Computerboy 阅读(155) 评论(0)  编辑  收藏 所属分类: 编程技术

简要描述

Struts采用Validator框架(Validator框架现在是Jakarta Commons项目的一部分)来解决校验问题,它将校验规则代码集中到外部的且对具体的应用程序中立的.xml文件中,这样,就将那些到处出现的校验逻辑从应用程序中分离出来,任何一个Struts应用都可以使用这个文件,同时还为校验规则的扩展提供了便利。更难能可贵的是由于Validator框架将校验中要用到的一些消息等信息与资源绑定有机结合在一起,使得校验部分的国际化编程变得十分的便捷和自然。

主要构成

Validator框架大致有如下几个主要组件:

  • 校验类:
    是Validator框架调用的一些Java类,它处理那些基本的通用的校验,包括required、mask(匹配正则表达式)、最小长度、最大长度、范围、日期等。校验类可以根据需要扩展。
  • 配置文件:
    主要包括两个配置文件,一个是validator-rules.xml,主要包含一些通用的校验规则,另一个是validation.xml,包含需要校验的一些form及其组件的集合。
  • 资源绑定:
    提供国际化标签和消息,缺省使用struts的资源绑定。即校验所用到的一些标签与消息都写在ApplicationResources.properities文件中。
  • Jsp 标签:
    为给定的form或者action path生成前端校验的 JavaScript 代码。
  • ValidatorForm:
    是ActionForm的一个子类。

校验框架的使用

1) 配置

在struts-config.xml文件中,最底下添加一组插件:

 <plug-in  className="org.apache.struts.validator.ValidatorPlugIn">
         <set-property  property="pathnames"  
                      
value="/WEB-INF/validator-rules.xml,
                              /WEB-INF/validation.xml"/>
     </plug-in>

从struts的例子,拷贝文件 validator-rules.xmlvalidation.xml ,放到目录 /WEB-INF 下面

2) 校验定义

validation.xml文件中定义校验的表单和属性。

例子:

     <form    name= "customerForm" >
             <field    property= "name"    depends= "required" >
                 <arg0    key= "customerForm.name" />
             </field>
               <field    property= "address"    depends= "required" >
                 <arg0    key= "customerForm.address" />
             </field>
         </form>

其中,表单名称customerForm必须在struts-config.xml中定义。

property为表单的属性。

depends为校验规则的名称。validator_rules.xml中缺省定义的校验规则请参考struts的文档。

<arg0    key= "customerForm.name" /> 指定校验规则中使用的消息在消息资源文件中的key值

3) 表单类继承

为了使服务器边的验证能够进行,将用到的formBean从ActionForm的子类改为ValidatorForm的子类,如:

public class BaseForm extends ValidatorForm implements Serializable

4) 客户端校验

要实现客户端校验,必须在提交的时候运行校验框架生成的javascript代码。

在<html:form>标签中,添加属性 onsubmit="return validateCustomerForm(this)"

在标签后加上:

< html:javascript formName = "customerForm"   cdata = "false"
      
dynamicJavascript = "true" staticJavascript = "false" />
<
script type = "text/javascript"
      
src = " < c:url    value = "/scripts/validator.jsp" /> " ></ script >

5) Action指定校验

在action的配置中加上指定校验的属性:validate="true",如:

 <action  path="/customer/customer"  
                
type="com.demo.order.actions.CustomerAction"  
                
name="customerForm"  
                
parameter="method"  
                
input="add"
                unknown="false"
                
validate="true"
                >
            <forward  name="view"  path="model.customer.view">
            </forward>
            <forward  name="add"  path="model.customer.add">
            </forward>
            <forward  name="list"  path="model.customer.list">
            </forward>

        </action>


只有注册用户登录后才能发表评论。


网站导航:
 

posts - 40, comments - 39, trackbacks - 0, articles - 0

Copyright © Computerboy