dgraham     2002/11/19 21:36:50

  Modified:    src/share/org/apache/struts/taglib/html FormTag.java
  Log:
  Don't display browser hiding trick for javascript when form is xhtml.  XML 
  user agents are allowed to ignore theses "comments" and the W3C recommends
  not using this trick.  Presumably, any browser that works with XHTML also
  supports javascript.  Note that I didn't enclose the script in a CDATA section
  because it doesn't use < or &.
  
  Revision  Changes    Path
  1.37      +26 -12    
jakarta-struts/src/share/org/apache/struts/taglib/html/FormTag.java
  
  Index: FormTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-struts/src/share/org/apache/struts/taglib/html/FormTag.java,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -r1.36 -r1.37
  --- FormTag.java      17 Nov 2002 00:57:07 -0000      1.36
  +++ FormTag.java      20 Nov 2002 05:36:50 -0000      1.37
  @@ -626,7 +626,11 @@
               }
               results.append("\r\n");
               results.append(this.getJsStartElement());
  -            results.append("  <!--\r\n");
  +            
  +            // xhtml script content shouldn't use the browser hiding trick
  +            if (!this.isXhtml()) {
  +                results.append("  <!--\r\n");
  +            } 
               results.append("  if (document.forms[\"");
               results.append(beanName);
               results.append("\"].elements[\"");
  @@ -636,8 +640,7 @@
                   results.append(refocus.toString());
               }
               results.append(".type != \"hidden\") \r\n");
  -            
  -            
  +                   
               results.append("     var focusControl = document.forms[\"");
               results.append(beanName);
               results.append("\"].elements[\"");
  @@ -653,7 +656,10 @@
               results.append("     }\r\n");
               results.append("     focusControl.focus();\r\n");
               
  -            results.append("  // -->\r\n");
  +             if (!this.isXhtml()) {
  +                results.append("  // -->\r\n");
  +            }
  +            
               results.append("</script>\r\n");
           }
   
  @@ -841,14 +847,22 @@
        */
       private String getJsStartElement() {
           String start = "<script type=\"text/javascript\"";
  -        String xhtml =
  -            (String) this.pageContext.getAttribute(Globals.XHTML_KEY, 
this.pageContext.PAGE_SCOPE);
  -
  -        if (!("true".equalsIgnoreCase(xhtml))) {
  +        
  +        if (!this.isXhtml()) {
               start += " language=\"JavaScript\"";
           }
           start += ">\r\n";
   
           return start;
  +    }
  +    
  +    /**
  +     * Returns true if this tag should render as xhtml.
  +     */
  +    private boolean isXhtml() {
  +        String xhtml =
  +            (String) this.pageContext.getAttribute(Globals.XHTML_KEY, 
this.pageContext.PAGE_SCOPE);
  +
  +        return ("true".equalsIgnoreCase(xhtml));
       }
   }
  
  
  

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

Reply via email to