Here is a suggested replace method (sorry for saying 
function).  Cross-language pollution:

     private String replace(String content, String before, String after) {
         int cursor = content.indexOf(before);
         while (cursor > -1) {
             content    = content.substring(0, cursor) + after + 
content.substring(cursor + before.length());
             cursor = content.indexOf(before, cursor + after.length());
         }
         return content;
     }

Hope this helps.  I am pretty sure your problem is a misunderstanding of 
the StringTokenizer class.  The token used to tokenize is removed from the 
tokens.  Your code seems to assume otherwise.  This replace will be a lot 
faster, anyway.

Micael

At 10:57 PM 3/8/02 +0000, you 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]>
> >
> >--
> >To unsubscribe:   <mailto:[EMAIL PROTECTED]>
> >For additional commands: <mailto:[EMAIL PROTECTED]>
> >Troubles with the list: <mailto:[EMAIL PROTECTED]>
> >
> >
>
>
>
>--
>To unsubscribe:   <mailto:[EMAIL PROTECTED]>
>For additional commands: <mailto:[EMAIL PROTECTED]>
>Troubles with the list: <mailto:[EMAIL PROTECTED]>



--
To unsubscribe:   <mailto:[EMAIL PROTECTED]>
For additional commands: <mailto:[EMAIL PROTECTED]>
Troubles with the list: <mailto:[EMAIL PROTECTED]>

Reply via email to