JSP Controls Tag Library FAQ
What does the name mean?
The first candidate was "JSP Components", but this name was already taken. So, "JSP Controls". Because this is a library, not a collection of ready-to-use components, the "Tag Library" part seemed logical.
What is it, a library or a web framework?
JSP Controls Tag Library is hardly a framework. It contains just about half a dozen tags, not enough for a framework, even for an elaborate library. The Library imposes certain rules on the components, which is a sign of a framework. Yet, the library never calls component code, it only separates the portions of code by functionality. The Library does not require the larger composite page to follow any specific rules, it is very unintrusive in respect to an application besides the components themselves.
Why <jsp:include>?
See below.
Why JSP files instead of custom tags?
The component lifecycle provided by the Library is impossible without redirection or forwarding (in non-Ajax mode). This requires a target with an URL. The content of a tag class cannot serve as a target, while a JSP file can.
Another reason is that the goal of the Library is to provide simple mechanism to create portlet-like components. The Library does not provide ready-to-use components in a tag class along with complex API to set component's properties. Contrary, all component's content is visible in the JSP. If you don't like how it works or need to change the protocol how it communicates with a parent page, you can always do that with no fuss. No explicit recompile or redeploy either, no complex XML files.
<jsp:include> action is the logical instrument for dynamic inclusion of JSP files into a composite page. JSP 1.2 allows to modify response headers in included fragment, which comes helpful in Ajax mode, when response should be returned as "text/xml".
Are Render tags really needed?
Prerender and Render tags are evaluated every time when a composite page is loaded. These tags are also evaluated when Reload tag decides to continue evaluating the JSP file instead of reloading the composite page (this happens in Ajax mode). Therefore, Prerender and Render tags are evaluated every time request hits the component and Reload tag does not redirect or forward to another location.
Considering the above, you can remove Render tags altogether and use JSTL conditional tags or JSP scriptlets. The benefit of having Render tags is that a component would require less modifications if the algorithm of choosing a particular view is changed. When Render tags are used, they check the view name only. This name can be set in Prerender tag, so only the body of Prerender tag would be affected.
If you decide to get by without Render tags, you still have to specify an empty Prerender tag because it updates response headers in Ajax mode.