开题:
   为了让大家对以下本人所诉有点头绪,现假设Struts配置文件中定义了一个名为 theForm 的 from bean (当然,其继承自 ValidatorForm ),我们将要在theWebPage.jsp 提交前对其名为 theField 的字段进行 required 验证。
 
配置:
   Struts-config.xml 配置文件的部分内容:
   <form-bean name="theForm"
              type="edgen.action.TheForm"/>
 
   validator-rules.xml 配置文件的部分内容:
   <validator name="required"
              classname="org.apache.struts.validator.FieldChecks"
              method="validateRequired"
              methodParams="java.lang.Object,
                       org.apache.commons.validator.ValidatorAction,
                       org.apache.commons.validator.Field,
                       org.apache.struts.action.ActionMessages,
                       org.apache.commons.validator.Validator,
                       javax.servlet.http.HttpServletRequest"
              msg="errors.required"/>
 
   validation.xml 配置文件的部分内容:
   <form name="theForm">
       <field property="theField"
              depends="required">
           <arg key="theForm.theField.displayname"
                position="0" />
        </field>
 
   theWebPage.jsp 服务端的源文件的部分内容:
   <html:form action="theAction.do" οnsubmit="return validateTheForm(this);">
    ...
    ...
   <html:cancel οnclick="bCancel=true;">取消</html:cancel>
    ...
    ...
   <html:javascript formName="theForm"/>
 
  
   application.properties 文件的部分内容:
   errors.required={0} is required.
    ...
    ...
   theForm.theField.displayname= The Field
 
分析:
    查看 theWebPage.jsp 的客户端页面的源文件会发现:
    var bCancel = false;
    function validateTheForm(form)
    {
        if (bCancel)
        {
            return true;
        }
        else
        {
            var formValidationResult;
            formValidationResult = validateRequired(form);
            return (formValidationResult);
        }
    }
    注意到了 function validateTheForm(form)  的签名了吗? 对了, theWebPage.jsp 中的 form 的 onsubmit 事件触发的就是这这个方法,重要的是这个函数的 form 参数就是 Html 表单标签对应的 BOM 对象。
    接下来更有意思...
    function theForm_required ()
    {
      this.a0 = new Array("theField", "The Field is required.", new Function ("varName", " return this[varName];"));
    }
    有没有发现这是一个类(可能有的同志会把它只当成一个函数,有点乱了,函数在javascript中也是类),而且它的域是数组,数组的内容的第一个元素就是字段名,第二个元素就是已经格式化了的提示信息,第三个元素就是处理验证其对应的变量的实用类。
   
    待续...