Why FINN.no chose Tiles-2
At FINN.no we were redesigning our control and view layers. We had already decided on Spring-Web as a framework for the control layer due to its flexibility and a design providing a simpler migration path. For the front end we were a little unclear. One of the alternatives we looked at was Apache Tiles. It follows the Composite Pattern... This meant it provided by default what we considered a superior design... It already had integration with Spring, and the way it worked ... gave us a clear MVC separation and an encapsulation ensuring single thread safety within the view domain.
Yet the most valuable benefits Tiles had to offer wasn’t realised until we started experimenting a little more…
The full story of FINN.no and Tiles-2 can be read here.
Autotag: autogeneration completed
After about two months of development, the Autotag project is feature-complete. JSP tags, Freemarker directive models and Velocity directives are generated from a common template models.
These template models must have a single public method, with this signature:
public void execute(<parameters>, Request request, ModelBody modelBody);
The modelBody parameter is optional: if it is not specified, the template model does not have a body.
For more features (required fields, default values, a name different to the one specified in the parameter list) a new annotation @Parameter has been created.
A Maven 2 (based on 2.2.1) plugin contains four Mojos:
- the first mojo (create-descriptor) reads the template models and produces an XML file containing the description of the read models;
- the others (generate-jsp, generate-freemarker, generate-velocity) produce boilerplate code.
The projects using the latter mojos must include some runtime dependencies.
All the Tiles 3 boilerplate code has been removed and used the plugin instead: it's a lot of boilerplate, boring code, now generated automatically.
Now the next step is to complete the test cases and to convince other potential users (I'm thinking of Struts 2) that it might help.