luehe 2002/11/06 12:58:10 Modified: jasper2/src/share/org/apache/jasper/compiler PageDataImpl.java Log: In XML view, always create page directive with 'contentType' and 'pageDirective' attributes, and append it right after the <jsp:root> start element, and suppress the 'contentType' and 'pageDirective' attributes from any subsequent page directive Revision Changes Path 1.16 +35 -7 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageDataImpl.java Index: PageDataImpl.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/PageDataImpl.java,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- PageDataImpl.java 6 Nov 2002 20:14:19 -0000 1.15 +++ PageDataImpl.java 6 Nov 2002 20:58:10 -0000 1.16 @@ -405,8 +405,11 @@ if (attrs != null) { printAttributes(attrs); } - if (body != null || text != null) { + if (tag.equals(JSP_ROOT) || body != null || text != null) { buf.append(">\n"); + if (tag.equals(JSP_ROOT)) { + appendPageDirective(); + } if (body != null) { body.visit(this); } else { @@ -441,8 +444,15 @@ int len = attrs.getLength(); for (int i=0; i<len; i++) { String attrName = attrs.getQName(i); - if ("import".equals(attrName)) { - // Ignore page directive's import attribute for now + if ("import".equals(attrName) || "contentType".equals(attrName) + || "pageEncoding".equals(attrName)) { + /* + * Page directive's 'import' attribute is considered + * further down, and its 'pageEncoding' and 'contentType' + * attributes are ignored, since we've already created + * a new page directive containing just these two + * attributes + */ continue; } String value = attrs.getValue(i); @@ -479,6 +489,7 @@ appendCDATA(text); buf.append(JSP_TEXT_END); + buf.append("\n"); } else { appendCDATA(text); } @@ -537,7 +548,24 @@ * Appends XML prolog with encoding declaration. */ private void appendXmlProlog() { - buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"); + buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"); + } + + /* + * Appends a page directive with 'pageEncoding' and 'contentType' + * attributes whose values are derived from pageInfo. + */ + private void appendPageDirective() { + buf.append("<").append(JSP_PAGE_DIRECTIVE); + buf.append("\n"); + + // append jsp:id + buf.append(" ").append("jsp:id").append("=\""); + buf.append(jspId++).append("\"\n"); + buf.append(" ").append("pageEncoding").append("=\"UTF-8\"\n"); + buf.append(" ").append("contentType").append("=\""); + buf.append(pageInfo.getContentType()).append("\"\n"); + buf.append("/>\n"); } } }
-- To unsubscribe, e-mail: <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org> For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>