luehe       2002/09/11 11:07:13

  Modified:    jasper2/src/share/org/apache/jasper/compiler Generator.java
  Log:
  Fixed 12466: Unable to call jsp:invoke in the body of a classic/simple
               tag in a tag file.
  
  Fixed 12467: Unable to call jsp:invoke withing a classic tag handler
               in a tag file
  
  Revision  Changes    Path
  1.98      +28 -9     
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.97
  retrieving revision 1.98
  diff -u -r1.97 -r1.98
  --- Generator.java    10 Sep 2002 21:52:35 -0000      1.97
  +++ Generator.java    11 Sep 2002 18:07:13 -0000      1.98
  @@ -1852,10 +1852,10 @@
            String varAttr = n.getTextAttribute("var");
            if (varReaderAttr != null || varAttr != null) {
                out.printil("_jspx_sout = new java.io.StringWriter();");
  -             out.print(toGetterMethod(n.getTextAttribute("fragment")));
  +             out.printin(toGetterMethod(n.getTextAttribute("fragment")));
                out.println(".invoke(_jspx_sout, _jspx_params);");
            } else {
  -             out.print(toGetterMethod(n.getTextAttribute("fragment")));
  +             out.printin(toGetterMethod(n.getTextAttribute("fragment")));
                out.println(".invoke(null, _jspx_params);");
            }
   
  @@ -2921,7 +2921,29 @@
        out.println();
        out.pushIndent();
        
  -     // Class body begins here
  +     /*
  +      * Class body begins here
  +      */
  +
  +     // Declare parameter map for fragment/body invocation. This must be
  +     // declared as an instance variable (as opposed to a local variable in
  +     // doTag()), so that it is accessible:
  +     //
  +     // - from the JspFragmentHelper subclass specific to the automatically
  +     //   generated tag handler, in case the fragment/body invocation is
  +     //   contained in a fragment body, as in:
  +     //     <my:simple>
  +     //       <jsp:invoke fragment="frag"/>
  +     //     </my:simple>
  +     //
  +     // - from the invocation of a classic tag handler that is separated out
  +        //   into its own method, if the fragment/body invocation is
  +     //   encapsulated in a custom action, as in:
  +     //     <my:classic>
  +     //       <jsp:invoke fragment="frag"/>
  +     //     </my:classic>
  +     out.printil("private java.util.Map _jspx_params = null;");
  +
        generateDeclarations(tag);
   
        // Static initializations here
  @@ -2961,9 +2983,6 @@
        out.printil("javax.servlet.ServletConfig config = " +
               "pageContext.getServletConfig();");
           
  -     // Declare parameter map for fragment/body invocation
  -     out.printil("java.util.Map _jspx_params = null;");
  -
        // Declare writer used for storing result of fragment/body invocation
        // if 'varReader' or 'var' attribute is specified
        out.printil("java.io.Writer _jspx_sout = null;");
  
  
  

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

Reply via email to