Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » J2EE Interest »

Re: Custom Tags in JSP

Karr, David

2003-09-02


It's been a while since this was written, but I didn't see any responses
answering this, so you might still be struggling with this.

The simple answer is that you have to implement the BodyTag interface
(or extend BodyTagSupport). If you then return "EVAL_BODY_BUFFERED"
from "doStartTag()", then you'll be able to handle the enclosed content
yourself. Read any custom tags tutorial that covers "BodyTag" for more
information about this.

> -----Original Message-----
> From: Vijith [mailto:Vijith.vayanippetta@(protected)]
>
> Hi All,
> I'm new to Custom Tags in JSP and I'm facing few issues.Can anyone
> please help me out in this regard.
>
> 1) I have a custom tag like
> <a:emp first="q">
> Test
> </a:emp>
>
> Now when i include this custom tag in my jsp, the attribute is getting
> set and the doStartTag is also getting called. The return variable in
> the doStartTag is specified as EVAL_BODY_INCLUDE. Hence now the
> doAfterBody is also getting executed and in this method I'm printing
> some extra jsp contents and is working fine. But the problem
> I'm facing
> is that Test given in the body of the jsp is also getting printed ,
> which i dont want.Can anyone tell me how to stop Test from occuring in
> the response stream but want to evaluate the body of the customtag,
> which i want to use for formatting..
>
> public int doStartTag() //throws IOException
>  {
>    try
>   {
>      this.pageContext.getOut().write("Hello world <br>");
>    }catch(Exception e){};
>   return this.EVAL_BODY_INCLUDE;
>  }
> public int doAfterBody()
>   {
>
>   try
>  {
>  this.pageContext.getOut().write("<br> in do after body tag ");
> BodyContent bc =  this.getBodyContent();
>  }catch(Exception e){};
>  return this.EVAL_PAGE;
>   }
>
> Output is
> Hello wold
> Test
> in do after body tag
>
> and out put i require is
> Hello wold
> in do after body tag
>
> The reason being is I will be passing expression as the body and will
> use this expression to modify the content of the body
>
> 2) Is it like if i call BodyContent bc =  this.getBodyContent(); in
> the doStartTag and later whatever i write to the out writer will not
> come to response stream.
>
> public int doStartTag() //throws IOException
>  {
>    try
>   {
>      this.pageContext.getOut().write("Hello world <br>");
>      BodyContent bc =  this.getBodyContent();
>     this.pageContext.getOut().write("after getting body content
> <br>");
>    }catch(Exception e){};
>   return this.EVAL_BODY_INCLUDE;
>  }
>
> output is
> Hello world
>
> and what i want is
> Hello world
> after getting body content
>
> Can anyone please give me some insight to this.
>
> Thanks in advance for your time.
>
>
> Vijith
>
> ==============================================================
> =============
> To unsubscribe, send email to listserv@(protected)
> include in the body
> of the message "signoff J2EE-INTEREST". For general help,
> send email to
> listserv@(protected)".
>

===========================================================================
To unsubscribe, send email to listserv@(protected)
of the message "signoff J2EE-INTEREST". For general help, send email to
listserv@(protected)".


©2008 junlu.com - Jax Systems, LLC, U.S.A.