tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From r..@cisco.com
Subject RE: Processing BodyContent in doAfterTag() has no effect
Date Fri, 08 Mar 2002 23:12:23 GMT
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 <RDaigle@healthdec.com> 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:kobe@ny.com]
> >Sent: Thursday, March 07, 2002 6:29 PM
> >To: tomcat-user@jakarta.apache.org
> >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:tomcat-user-unsubscribe@jakarta.apache.org>
For additional commands: <mailto:tomcat-user-help@jakarta.apache.org>
Troubles with the list: <mailto:tomcat-user-owner@jakarta.apache.org>


Mime
View raw message