<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.ActionErrors,
                       javax.servlet.http.HttpServletRequest"
                  msg="errors.required">         <javascript><![CDATA[
            function validateRequired(form) {
                var isValid = true;
                var focusField = null;
                var i = 0;
                var fields = new Array();
                oRequired = new required();
                for (x in oRequired) {
                 var field = form[oRequired[x][0]];
                
                    if (field.type == 'text' ||
                        field.type == 'textarea' ||
                        field.type == 'file' ||
                        field.type == 'select-one' ||
                        field.type == 'radio' ||
                        field.type == 'password') {
                        
                        var value = '';
      // get field's value
      if (field.type == "select-one") {
          var si = field.selectedIndex;
     if (si >= 0) {
         value = field.options[si].value;
     }
      } else {
value = field.value;
      }
                        
                        if (trim(value).length == 0) {
                            if (i == 0) {
                       focusField = field;
                   }
                   fields[i++] = oRequired[x][1];
                   isValid = false;
                        }
                    }
                }
                if (fields.length > 0) {
                   focusField.focus();
                   alert(fields.join('\n'));
                }
                return isValid;
            }
            
            // Trim whitespace from left and right sides of s.
            function trim(s) {
                return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
            }
            
            ]]>
         </javascript>      </validator>其中看不懂的是
oRequired = new required();  // required是在什么地方声明的
var field = form[oRequired[x][0]];  // 什么意思?form是个数组?我对jsp语法不熟,很想请教大家的是,一个类,比如Array是在什么地方声明的,都有哪些类可以使用?是不是java中的类都可以使用(因为jsp是要编译成java的)?
还有上面的
var field = form[oRequired[x][0]];
为什么form和oRequired可以当作数据使用,field都有哪些属性,有什么介绍文档

解决方案 »

  1.   

    网上讲解的地方不少啊
    比如http://www.elook.net.cn/handbook/JavaScript/contents.htm不过那个required就不知道了,应该是struts自带的吧,不知放在什么地方
      

  2.   

    /* <html:javascript formName="user"/> */
    以下是根据struts1.1源码写出来的<script type="text/javascript" language="Javascript1.1"> 
    <!-- Begin 
         var bCancel = false;     function validateUser(form) {                                                                   
            if (bCancel) 
          return true; 
            else 
           return validateRequired(form);
       }     function required () { 
         this.aa = new Array("userId", "userIdmessage", new Function ("varName", "this.mask=/^[0-9a-zA-Z]*$/;  this.minlength=1; this.maxlength=10; return this[varName];"));
         this.ab = new Array("password", "passwordmessage", new Function ("varName", "this.mask=/^[0-9a-zA-Z]*$/;  this.minlength=1; this.maxlength=10; return this[varName];"));
        } // 这中间是validator-rules.xml中定义的javascript的源码//End --> 
    </script>