Hi Lukas,

If I understand you correctly you need to look into the pushBody and popBody methods on PageContext. Basically, in doStartTag(), call pageContext.pushBody() then in doEndTag() you call pageContext.popBody(), retrieve the BodyContent's value, muck about with it to your heart's content, then output your transformed markup to the current JspWriter.

Something like that anyway. This is off the top of my head so I may be remembering the semantics slightly wrong, but I've definitely done this before....


class MyTag extends BodyTagSupport {


public int doStartTag() {

pageContext.pushBody();

       return EVAL_BODY_INCLUDE;
   }

public int doEndTag() {

       pageContext.popBody();
       String transformedMarkup =
   doSomeTransformations(getBodyContent().getString());
       pageContext.getOut().print(transformedMarkup);

       return EVAL_PAGE;
   }

}

Hope that helps,

Mark



Lukas Bradley wrote:

Hi all,

Maybe I'm just tired, but the answer to this is not to be found.  I could me
making this harder than it is, or something might be right in front of me,
and I don't see it.

What I want is a custom tag that creates other custom tags.  Here is a
simple example:

<lukas:myTag lang="en" />

Should produce something like this:

<table>
 <tr><td>English</td></tr>
 <tr><td><html:file property="formFile" styleClass="FormField"/></td></tr>
  <!-- Imagine a lot more custom tags here -->
</table>

Which should then evaluate to:

<table>
 <tr><td>English</td></tr>
 <tr><td><input type="file" name="formFile" value=""
class="FormField"></td></tr>
  <!-- Imagine a lot more custom tags rendering here. -->
</table>

I've thought about trying to extend BodyTagSupport, return
EVAL_BODY_BUFFERED in doStartTag(), modify the bodyContent in doAfterBody(),
then return EVAL_PAGE() in doEndTag().  However, BodyContent has a protected
constructor, and no way to set its content.

I want to maintain the functionality gained from Struts-like custom tags,
while extracting the creation of them in a super-duper momma tag.  Any help?

Lukas




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]







--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to