dgraham 2002/11/19 21:56:08 Modified: src/share/org/apache/struts/taglib/html JavascriptValidatorTag.java Log: Enclose script in CDATA section when rendering as xhtml. This prevents xml clients from misinterpreting script characters like < and &. Revision Changes Path 1.17 +30 -7 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.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- JavascriptValidatorTag.java 16 Nov 2002 06:05:21 -0000 1.16 +++ JavascriptValidatorTag.java 20 Nov 2002 05:56:08 -0000 1.17 @@ -510,13 +510,20 @@ src = null; } + /** + * Returns the opening script element and some initial javascript. + */ protected String getJavascriptBegin(String methods) { StringBuffer sb = new StringBuffer(); String name = formName.substring(0, 1).toUpperCase() + formName.substring(1, formName.length()); sb.append(this.getStartElement()); - + + if (this.isXhtml()) { + sb.append("<![CDATA[\r\n"); + } + if ("true".equals(htmlComment)) sb.append(htmlBeginComment); sb.append("\n var bCancel = false; \n\n"); @@ -566,12 +573,21 @@ return sb.toString(); } + /** + * Returns the closing script element. + */ protected String getJavascriptEnd() { StringBuffer sb = new StringBuffer(); sb.append("\n"); - if ("true".equals(htmlComment)) + if ("true".equals(htmlComment)){ sb.append(htmlEndComment); + } + + if (this.isXhtml()) { + sb.append("]]>\r\n"); + } + sb.append("</script>\n\n"); return sb.toString(); @@ -632,10 +648,7 @@ StringBuffer start = new StringBuffer("<script type=\"text/javascript\""); // there is no language attribute in xhtml - String xhtml = - (String) this.pageContext.getAttribute(Globals.XHTML_KEY, this.pageContext.PAGE_SCOPE); - - if (!("true".equalsIgnoreCase(xhtml))) { + if (!this.isXhtml()) { start.append(" language=\"Javascript1.1\""); } @@ -645,6 +658,16 @@ start.append("> \n"); return start.toString(); + } + + /** + * Returns true if this is an xhtml page. + */ + 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]>