The problem is in your doAfterBody().
StringTokenizer never returns the delimiter
and hence the block that inserts <BR> in the
enclosing JspWriter never gets executed.
Replace
StringTokenizer st = new StringTokenizer(x, ".");
with
StringTokenizer st = new StringTokenizer(x, ".",true);
>private void replaceDots(final String x, JspWriter w)
> throws java.io.IOException
>{
> if (x == null) return ;
> StringTokenizer st = new StringTokenizer(x, ".");
> while (st.hasMoreTokens()) {
> String f = (String)st.nextToken();
> w.println( f.equals(".") ? ".<br>":f);
> }
>}
Rk
x77309
On 8 Mar 2002, K Br wrote:
> Thanks for your help. But I don't think that is
> causing the problem:
> (a) for one thing, the other text written to
> body content show up in the output. Only the
> stuff inserted into the enclosing writer in
> doAfterBody() is mysteriously missing.
>
> (b) I am writing to the enclosing JspWriter -
> not to the body content.
>
> Consider the following:
>
> <body>
> <kobe:Filter>
> I am a Laker Fan. I am Kobe.
> </kobe:Filter>
> <body>
>
> What appears on output is:
> I AM A LAKER FAN I AM KOBE
>
> The periods are missing. What (I think) my doAfterBody()
> is doing is to replace "." tokens with ".<br>" tokens.
> Can you tell me where the <br> tokens that I inserted
> vanished?
>
> /K
>
> On Fri, 8 Mar 2002 01:52:33 -0500 Ryan Daigle <[EMAIL PROTECTED]> wrote:
> >I believe you have to flush the writer out to the body content of the tag at
> >the end tag event:
> >
> >doEndTag() throws JspException {
> > bodyContent.writeOut(YourWriter);
> >}
> >
> >That work?
> >
> >-----Original Message-----
> >From: K Br [mailto:[EMAIL PROTECTED]]
> >Sent: Thursday, March 07, 2002 6:29 PM
> >To: [EMAIL PROTECTED]
> >Subject: Processing BodyContent in doAfterTag() has no effect
> >
> >
> >This is no JSP forum and I understand that.
> >I would appreciate any pointers on this.
> >
> >Using Tomcat4.0.2 I have written a custom tag with body.
> >The intention is to process the body and
> >replace any periods with line breaks (in HTML)
> >before writing the BodyContent to the
> >enclosing JspWriter.
> >
> >It seems that replacing "." with ".<br>" does not
> >take any effect. The output HTML does not contain
> >the <br> tags (when viewed from the browser).
> >
> >From the doAfterBody() I call the filter
> >to replace the periods with <br> as follows.
> >
> >Pl let me know if my understanding of the
> >TAG lifecycle is wrong:
> >
> >public int doAfterBody() throws JspException {
> >try {
> >String txt = getBodyContent().getString();
> >replaceDots(txt.toLowerCase()
> >getPreviousOut()
> >);
> >}
> >catch (java.io.IOException ioxc) {
> >throw new JspException(ioxc.toString());
> >}
> >
> >return SKIP_BODY;
> >}
> >
> >private void replaceDots(final String x, JspWriter w)
> >throws java.io.IOException
> >{
> >if (x == null) return ;
> >StringTokenizer st = new StringTokenizer(x, ".");
> >while (st.hasMoreTokens()) {
> >String f = (String)st.nextToken();
> >w.println( f.equals(".") ? ".<br>":f);
> >}
> >}
--
To unsubscribe: <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>