Try using just "... extends TagSupport ..." and not BodyTagSupport.  Seems I
had the same problem and went round and round on it.

-----Original Message-----
From: Mark R. Diggory [mailto:[EMAIL PROTECTED]]
Sent: Sunday, December 15, 2002 6:58 PM
To: [EMAIL PROTECTED]
Subject: Stuck in Mud... Need your help...


This is an issue that is not specific to Jakarta Taglibraries, but I
cannot find a relevant location to deal with issues that seem to arise
with different versions of Tomcat and the Implementation of Custom
Taglibraries. (If anyone can recommend a better list to discuss this on
please tell me.

I've got a custom tag that implements a TryCatchFinally interface, its
relatively simple and mirrors the behavior of the Catch tag in JSTL. My
problem is that with the latest version of Tomcat (4.1.12). I am getting
a null BodyContent object from this.getBodyContent();  in the
doAfterBody() method, can anyone tell me why this would be happening?

I don't understand when, where and why BodyContent could end up Null...

Any advice would be helpfull. I've been trying to migrate my
taglibraries (including my new JNDI taglibrary that I was going to
donate to Apache as a "Sandbox" taglibrary). But first I need to get
them upgraded and running properly and this BodyContent issue has been a
major flaw this week.

Tag Class:

package edu.harvard.hmdc.taglib.conditional;

import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.IterationTag;
import javax.servlet.jsp.tagext.BodyTag;
import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.servlet.ServletRequest;
import java.io.PrintWriter;
import java.io.IOException;

import java.util.*;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
  *  Generated tag class.
  */
public class TestTag extends BodyTagSupport implements
javax.servlet.jsp.tagext.TryCatchFinally{

     /** Log object for this class. */
     private Log log = null;

     public TestTag() {
         super();
         log = LogFactory.getLog(this.getClass());
         log.debug("log enabled in Get Tag");
     }


     public int doStartTag() throws JspException, JspException {
         return EVAL_BODY_INCLUDE;

     }

     public int doEndTag() throws JspException, JspException {
         return EVAL_PAGE;
     }

     public int doAfterBody() throws JspException {
         try {
             BodyContent bodyContent = getBodyContent();
             JspWriter out = bodyContent.getEnclosingWriter();

             bodyContent.writeOut(out);
             bodyContent.clearBody();

         } catch (IOException ex) {
             log.error(ex.getMessage(),ex);
         }

         return SKIP_BODY;
     }

     public void doCatch(Throwable t) throws Throwable {
        log.debug("doCatch(Throwable t)");
        log.debug("t="+t.getClass().getName());
        //throw t;
     }


     public void doFinally() {
         log.debug("doFinally()");
     }

}


JSP Example:

     <cond:test>
        <!-- test content -->
        <%
         if(request.getParameter("throw") != null){
                 throw new java.lang.Exception("Message from Exception");
         }
         %>
        Successfully completed test block without exception.
     </cond:test>


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


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

Reply via email to