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>

Reply via email to