Adding a new method in interface (in case new version of struts is released) will break earlier application’s form bean. While in case of base class one can add new method as default implementation which doesn’t break earlier applications to use new version, its a simple extensiblity issue while making ActionForm as Interface.
In case Action Form is being an interface, struts developers would be required to use their business objects as Action Forms which can cause problems, Please find below some them:
Action Form is implemented to accept any value from HTML form and then validate those properties, If any one of them are found to be incorrect; so can be corrected in seconds. While business objects are not designed to buffer invalid data so programmer cannot change incorrect values so frequently moreover, exception will be thrown that can ruined your application.
Illegal Resource Usage:
Some business objects are designed to start transactions, lock resources like database while they are used. In that case; even if input fields from HTML form are invalid, resources will be locked and transactions will start which is illegal usage of resources.
Invalid State Problem:
Auto population mechanism of struts is designed to populate objects first and then validate. In that case if business objects are used as Action Form and a property of a business object is meant to change system state, Invalid value may affect system and application in turn. So using one layer of ActionForm will block such invalid property values.