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

Reply via email to