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]>