Answers inline...

>At some point NESTED tags were being developed outside of the STRUTS tag
>library, however, recently they have been merged into the nightly build.
>There are a number of questions which I have in this regard:
>
>1. With introduction of nested tags into the library, there are now two
>methods of coding your page, mainly using nested tags or not.  On one hand,
>using the nested tags are preferred (I think).  On the other hand, what is
>the need for keeping the standard STRUTS tags in the library other than for
>compatibility reasons.  In addition, point 2 (below) raises additional
>concern.
>
The nested tags are literally an extension to the original tags. All 
they do is provide the mechanism that allows the tags to see their 
parents and define how they relate to the tags they're nested inside.

All tags that can benefit from being nested have been extended. But not 
all. Most tags like the html tags use a "property" property to define 
bean properties. The nested tags manage this to define the nesting. You 
could already do it if you used dot notation "myProperty.propertyTwo". 
The nested tags manage this, and manage it in a complete sense beyond 
what you can type into your static properties (iterators for instance). 
Some tags have nothing to do with this, and hence not extended.

Some tags have alternative uses besides using the "property" property. 
<html:options> for example can use a "collections" attribute, and not 
bother with the "name" and "property" routine the other tags do. The 
nested tags assume you're using the nested context, and so rely on 
setting and managing the "name" and "property" properties.

For these reasons, the nested tags are not a replacement, but should be 
seen as an enhancement that allows you to nest them properly.

Plus the fact that some tags are just handy to use in their original 
form along with the nested tags. That's why they weren't intended as a 
replacement. They just enable truly neat data modeling and just as neat 
markup.

>2. Since nested tags a based on the "general" STRUTS tags, how closely are
>nested tags following the development of the "general" STRUTS tag.  In other
>words, if an additional attribute is added to an existing STRUTS tag, or a
>new tag is developed for STRUTS, will this change be "mirrored" in the
>NESTED tag library?
>
At the moment they include all the properties of the tags they extend. 
If an extra attribute is added to a tag the nested tags extend, it is up 
to the committer of that attribute to add it to the tld of the nested 
tags. Or at the very least tell the rest of the committers about it so 
someone can do it. This really is a menial maintenance effort.

As for functionality of the base tags themselves... the nested tags 
extend them, so anything internal is naturally obtained for free.

>3. Would it be a good effort, to incorporate the "NEST" and "ROOT" tags
>directly into STRUTS proper, and make the existing STRUTS tags NEST/ROOT
>aware (perhaps by pointing the struts tags to use the .nested. extensions or
>otherwise, just incorporating the logic in the NESTED library into the
>existing STRUTS tags themselves.
>
That was an option I strongly considered, but not all tags need to be 
nested aware. The logic for the nesting would have to be managed on a 
case by case basis, and also make the tld for the tags more complex. 
All-in-all, making the tags harder to maintain, and harder for Struts 
developers to use. Where as you take the clean markup you can use for 
the nested tags (because they're specifically made and not an 
adaptation), it's so clean and nice to play with. This could only be 
achieved by having their own tld and working structure.

>4. The context of the NEST or ROOT tags do not flow into any "dynamically"
>included pages (<jsp:include... for instance).  We have an application which
>dynamically includes required presentation for a particular object at
>runtime.  It is not practical to include this presentation at compilation
>time, since the type of the object is not known.  We were at first, using
>the NESTED library, however, because it did not properly work with
>dynamically included pages, we stopped using it in favor of a <bean:define
>toScope="request"... just prior to the dynamic include.
>
The tags rely on the run-time ability of running back up the tag 
hierarchy to ask the parent tags about their nested property. To do this 
through a dynamic include would require extra logic to place the nested 
property value at each step into scope so it can persist to the new 
page. It's possible, and not off my "to do" list all together. Just a 
matter of time, and nobody has come complaining that it's stopping them 
from doing something.

If you want to use dynamic includes, you can use the <nested:define> tag 
at point of inclusion and name the bean at that level. Then in your 
included page you can use the <nested:root> tag to pick up on the name 
of the bean you just defined, and from there continue nesting as if you 
were all in the same page. Note that this would only be for viewing 
details, and not updating values in the child page. For that I'd simply 
recommend using the static include directive. It has all the development 
time advantages, only it gets compiled into the main page at compile time.

The tags only need the root tag to point to a bean that the tags can get 
at. From there it's just property management.

As for "..since the type of the object is not known...", how does this 
apply?...
You have to rely on the property layout to your object model to markup 
any tags in the first place.
The nested tags are the same as the originals, as long as the properties 
match up to the right object, you're golden. One advantage nesting has 
over original tags in this capacity is that the natural composition of 
the data model and accessor properties will handle all this and select 
the right object for you. Sweet.


Hope that this has cleared some nagging thoughts. Possibly made a few, 
but that's what you get for creating something for a group of autonomous 
thinkers :)

The nested tags took the path of least resistance which also happen to 
be the cleanest result. When the tags were first made, it was after 
consultation with the struts-dev list and its contributors as to how I 
went about it. So even though it started out separate to Struts, it was 
made as if it was a part of it.


Arron.


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

Reply via email to