One thing to be aware of with findAncestorWithClass() is that it works only
within the JSP page. This is not surprising in itself. However, if you want
to be able to have the nested tag in an included page, you can't use this
mechanism to find the parent.

That is, with this code in the page:

  <mytags:tag1 ... >
      <mytags:tag2 ... />
  </mytags:tag1>

tag2 can find tag1 using findAncestorWithClass() just fine. However, with
this:

  <mytags:tag1 ... >
      <jsp:include page="pageContainingTag2.jsp" />
  </mytags:tag1>

tag2 will be unable to find tag1 using findAncestorWithClass().

It may not always be necessary to be able to do this, but I point it out
because we had this issue with the Struts HTML tags. The various <html:*>
tags need to refer to their containing <html:form> tag. However, if the form
gets very large, and the page breaks the limit on the size of a compiled
method, you are forced to split the form across pages. To make this work in
Struts, the doStartTag() method in <html:form> stores a reference to itself
as a request attribute, the nested tags use that, and then doEndTag() cleans
it up.

--
Martin Cooper


----- Original Message -----
From: Shawn Bayern <[EMAIL PROTECTED]>
To: Tag Libraries Users List <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>
Sent: Wednesday, December 05, 2001 12:20 PM
Subject: Re: How to determing the relationship between tags


> On Wed, 5 Dec 2001, bo wrote:
>
> > I wonder if I can determine the relationship among tags, such as tag A
> > should be within tag B etc. Is that possible? Thanks!
>
> You can use a TagLibraryValidator class to enforce arbitrary
> characteristics of the XML view of a JSP page, including specific
> relationships among tags.  For an example of a SAX-based approach to
> validation, see the JstlCoreTLV class in the "Standard" taglib.
>
> Tags can also, at runtime, gain access to their parent tag handlers.  The
> most convenient mechanism for doing this is, in most cases, the static
> TagSupport.findAncestorWithClass() method, part of the JSP API.
>
> Hope that helps,
>
> Shawn
>
>
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>
>


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

Reply via email to