周游世界

喂马, 劈柴, 周游世界

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  28 随笔 :: 0 文章 :: 4 评论 :: 0 Trackbacks
简要描述
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.xml 和 validation.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>
posted on 2006-06-28 10:32 周游世界 阅读(188) 评论(0)  编辑  收藏 所属分类: Struts

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


网站导航: