- new methods in the Input interface to fetch a populated bean from the input parameters: (idea by Bruno Braga) (this can be also accomplished by using a VOFilter) getObject(Class klass) getObject(Class klass, String prefix); - new methods in the Output interface to place the properties of a bean inside the action output: (idea by Bruno Braga) (this can be also accomplished by using a OVFilter); setObject(Object bean); setObject(Object bean, String prefix); Ex: User user = (User) getObject(User.class); - new DynValidatable interface to allow dynamic validations, in other words, the prepareValidator method from the interface will be called on every request instead of just in the first one like it is the case for Validatable. - new parameter (isDynamic) for the ValidationFilter constructor, so that is can also become dynamic. - ClassActionConfig is now deprecated. You can use the ActionConfig to support the same functionality... Ex: Instead of: ActionConfig ac = new ClassActionConfig(HelloAction.class); You can use: ActionConfig ac = new ActionConfig(HelloAction.class); - Inner actions were not supporting inheritance, in other words, they were using getDeclaredMethod instead of getMethod. - new method getDate for the Input interface, so you can fetch a converted date from the action input. - new DynAuthorizationFilter and Authorizable interface so that you can implement dynamic and complex authorization logic for your actions! - method getInnerActionName() from Controller was changed to receive HttpServletRequest instead of the action name. (If you are implementing your own controller extending the Mentawai controller, you may have to change that method in your class) - ListManager.convert(String listname, List data, String keyProperty, String valueProperty) was refactored to accept a Collection instead of a List - ListItem interface introduced. Now ListDataItem implements ListItem and all framework works with ListItem. - As a result of the 2 changes above, now you can pass a regular Collection as a list to a select, listCheckboxes and listRadiobuttons. The rule is simple: If the element of the collection is a ListItem, call appropriate getIdAsString() and getValue from the interface to get the ID and the VALUE for the option. If the element is not a ListItem, then the ID and the VALUE will be equal to element.toString(). Note that you can still use the ListManager.convert(String listname, List data, String keyProperty, String valueProperty) and the ListManager.convert(String listname, Map data). - convert methods of ListManager does not need a listName anymore (a listName is only needed if you plan to add the ListData to the ListManager as a static list!) - HibernateFilter now supports the transactional mode, which will open a transaction everytime a session is requested. (Hey, Hibernate authors recommend using a transaction even when just a read operation is being made, so don't blame on me! http://www.manning.com/bauer2/chapter2.pdf) - framework code migration to TIGER and refactoring to support generics throughout the code - bug fix to support MUSTANG