Jim Henderson wrote:
Try using just "... extends TagSupport ..." and not BodyTagSupport. Seems IThanks, yes I went round and round until I came to this conclusion as well. I was trying to use EVAL_BODY_BUFFERED with BodyTagSupport and it was breaking on Tomcat for what I suspect are other reasons. Then I was reading about EVAL_BODY_INCLUDE, I thought that would make the code work, I just didn't realize that it would make the BodyContent object unavailable for use. I was able to use just TagSupport because my tag really just passes the body content through without processing it, I have subtags that actually manage what content gets shown or not. I.E.
had the same problem and went round and round on it.
<cond:exception>
<cond:try>
....
some content which could throw an exception
....
</cond:try>
<cond:catch name="foo" class="bar">
....
some code to show if bar is thrown
....
</cond:catch>
<cond:catch name="foo2" class="bar2">
....
some code to show if bar2 is thrown
....
</cond:catch>
</cond:exception>
Cheers,
-Mark
-----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]>
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
