rleland     2003/07/27 22:54:33

  Modified:    src/share/org/apache/struts/taglib/html
                        JavascriptValidatorTag.java
  Log:
  Bug 20754, Enhancement to allow checking of all constraints
  instead of aborting. The default  is same as struts 1.1.
  Patch for struts 1.1 RC2 provided by (Marcelo Caldas)
  
  Revision  Changes    Path
  1.36      +29 -10    
jakarta-struts/src/share/org/apache/struts/taglib/html/JavascriptValidatorTag.java
  
  Index: JavascriptValidatorTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/JavascriptValidatorTag.java,v
  retrieving revision 1.35
  retrieving revision 1.36
  diff -u -r1.35 -r1.36
  --- JavascriptValidatorTag.java       26 Jul 2003 18:51:35 -0000      1.35
  +++ JavascriptValidatorTag.java       28 Jul 2003 05:54:33 -0000      1.36
  @@ -367,7 +367,7 @@
                   PageContext.APPLICATION_SCOPE);
           
           Locale locale = TagUtils.getInstance().getUserLocale(this.pageContext, 
null);
  -        
  +
           Form form = resources.get(locale, formName);
           if (form != null) {
               if ("true".equalsIgnoreCase(dynamicJavascript)) {
  @@ -402,6 +402,7 @@
        * @param resources
        * @param locale
        * @param form
  +     * @since Struts 1.2
        */
       private String createDynamicJavascript(
           ModuleConfig config,
  @@ -418,7 +419,15 @@
   
           List actions = this.createActionList(resources, form);
   
  -        results.append(this.getJavascriptBegin(this.createMethods(actions)));
  +        Object stopOnErrorObj = 
pageContext.getAttribute(ValidatorPlugIn.STOP_ON_ERROR_KEY + '.'+ config.getPrefix(),
  +                PageContext.APPLICATION_SCOPE);
  +        boolean stopOnError = true;
  +        if (stopOnErrorObj != null && (stopOnErrorObj instanceof Boolean)) {
  +            stopOnError = ((Boolean)stopOnErrorObj).booleanValue();
  +        }
  +
  +
  +        
results.append(this.getJavascriptBegin(this.createMethods(actions,stopOnError)));
   
           for (Iterator i = actions.iterator(); i.hasNext();) {
               ValidatorAction va = (ValidatorAction) i.next();
  @@ -526,11 +535,18 @@
       /**
        * Creates the JavaScript methods list from the given actions.
        * @param actions A List of ValidatorAction objects.
  +     * @param stopOnError If true, behaves like released version of struts 1.1
  +     *        and stops after first error. If false, evaluates all validations.
        * @return JavaScript methods.
  +     * @since Struts 1.2
        */
  -    private String createMethods(List actions) {
  +    private String createMethods(List actions, boolean stopOnError) {
           String methods = null;
  -        
  +        String methodOperator = " && ";
  +        if (!stopOnError) {
  +            methodOperator= " & ";
  +        }
  +
           Iterator iter = actions.iterator();
           while (iter.hasNext()) {
               ValidatorAction va = (ValidatorAction) iter.next();
  @@ -538,7 +554,7 @@
               if (methods == null) {
                   methods = va.getMethod() + "(form)";
               } else {
  -                methods += " && " + va.getMethod() + "(form)";
  +                methods += methodOperator + va.getMethod() + "(form)";
               }
           }
           
  @@ -651,7 +667,10 @@
           if (methods == null || methods.length() == 0) {
               sb.append("       return true; \n");
           } else {
  -            sb.append("       return " + methods + "; \n");
  +            //Making Sure that Bitwise operator works:
  +            sb.append(" var formValidationResult;\n");
  +            sb.append("       formValidationResult = " + methods + "; \n");
  +            sb.append("     return (formValidationResult == 1);\n");
           }
   
           sb.append("   } \n\n");
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to