As Brent pointed out, there are problems associated with using inheritance as a means of code reuse. The example you gave above is a perfect example. You need to inherit from DispatchAction in order to use it's functionality, yet you have some other functions you need to include, and you can't inherit from two classes.
Interfaces offer some definite advantages over inheritance, but one big disadvantage is that an Interface doesn't contain any code. It's simply a template telling what a class can do.
Another
pattern for code reuse is known as "delegation". This simply means using another class to do your dirty work. To use the delegation pattern, you write a class that performs a particular function or set of functions, and then call methods on that class whenever you need those functions.
As I pointed out in my first post, one solution would be to put all the logic currently performed by your CommonDateAction superclass, and put them in a class called DateHelper or DateUtils or something like that. Then, if you need date related data placed in your action form, you simply call one of the methods on the class and pass it an instance of your action form to be populated.