Now that I've had a year or so or heavy Struts use, I've come to believe that (IMHO) validation within Struts is a little less clear and concise than it could otherwise be with a few small changes.
Currently, validation is defined by specifying a true/false value for the 'validate' attribute for an ActionMapping, and which validation to perform is defined by either the ActionMapping's (Form) 'name' or 'path' attribute depending on whether the Form extends from ValidatorActionForm or not. It seems to me that it would be clearer to introduce a 'validation' attribute into ActionMapping which defines the Id of the validation (if any) to perform. This would supercede the 'validate' attribute and removes the responsibility of identifying the validation target from the combination of the (Form) 'name' attribute and the ActionForm inheritance hierarchy. It also allows all the benefits of using (currently) using a ValidatorActionForm to validate based on ActionMapping path, plus those of using Form named mappings, while also allowing the freedom to mix, match and reuse validations across ActionMappings. It should be easy to make this new addition entirely backward compatible. Ie If 'validation' attribute is not found then look for current attributes and follow the existing validation path, at least for some deprecation period. Once this refactoring has been achieved, it also opens up the possibility of further enhancing the existing validation mechanism. Ie Allowing validations to contain other validations etc. Though I would first start by simplifying the validation definitions, which I also find somewhat non-intuitive at times. Anyway, just my 2 cents. I'd like to thank the Struts development community for a pretty decent framework, especially those worked on Tiles - it really rocks! William Ferguson