The Struts tags seem to provide only the most rudimentary functionality. Why is there not better support for date formatting and advanced string handling?
Three historical reasons: First, work started on the JSTL and we didn’t want to duplicate the effort. Second, work started on Java Server Faces, and we didn’t want to duplicate that effort either. Third, in a Model 2 application, most of the formatting can be handled in the ActionForms (or in the business tier), so all the tag has to do is spit out a string. This leads to better reuse since the same “how to format” code does not need to be repeated in every instance. You can “say it once” in a JavaBean and be done with it.