Jakarta Foundation Taglib Status Overview -------- The Foundation taglib is an attempt to incorporate a number of ideas about JSP tag design into an integrated framework for developing a web application. The functionality of the Jakarta request, response, session, page, and application taglibs is provided as an integrated whole. The desgin is based on discussion in the taglib-dev list, review of other tag libraries and frameworks such as Struts, and my own experience designing taglibs. The discussion in the taglib-dev list has been very valuable input and I am sure many will find suggestions they made incorporated. At the core of the foundation is a standard syntax which can be used in tag attributes to refer to an objects data for Arrays, Beans, Iterators, and Maps. See the Foundation taglib docs and the JavaDocs for more information on how this is implemented. The ability to pass data between tags using objects minimizes the need to pass data between tags using strings within a tag body. Foundation relies a great deal on Beans, introspection, and reflection. But it is designed to try and mimimze the impact of this by using a static cache for Bean methods. There is some extra overhead from invoking methods on beans, but reading the BeanInfo for a class and doing introspection only happens once. I am very interested in starting a discussion on the taglib-dev list about the Foundation taglib core design, features, syntax, etc. Capture that information into design and roadmap documents, then move forward again with development. All taglib developers are welcome to particpate and contribute to the code once we have a final design and roadmap. Status of submission -------------------- The taglib is not fully implemented. All the java source files exist, but some of them are not fully implemented, or if implemented, not fully tested. The DateTag, PrintURLQuery, and SetPropertiesTag are just stubbed in. The features for using the HTTP Response are not fully implemented. Items to finish in current design --------------------------------- Implement DateTag and support for use of Date's including features from Datetime taglib. Implement PrintURLQueryTag Implement SetPropertiesTag Finish implementation of HTTP Response related tags and Beans, these are only partially done. Implement Tag release() method where necessary. Use regular expressions for doing character replacement in the PrintValueTag, PrintFilterTag, and PrintURLQueryTag. Items to design and implement ----------------------------- Extend the attribute object syntax. Add the ability to nest another object as the integer value for an object array such as "array[loop.count]" including the ability to do simple integer math such as "array[loop.count + 1]". Add the ability to nest another object as the key for a Map such as "map{loop.name}". Ability to do simple math when creating a number using the NumberTag. Logic tags to implement a switch { case: } type of construct. A way to implement continue and break in the forEach tag. A random number tag. A tag to generate a unique random key for a Map which can be used as the value for static HTML form input values. Merge in tags to support regular expressions like the regexp taglib. Merge in tags to support jdbc like the jdbc taglib. Implement JSP page translation phase validation of object syntax. Internationalization (i18n) support for Strings used in exceptions. Tags to support internationalization (i18n). Research ways to optimize the code used to implement the object syntax and beans. Research ways to implement object pooling for beans and script variables used by the taglib to improve performance.