On 1/26/07, Christopher Schultz <[EMAIL PROTECTED]> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Frank,

Frank W. Zammetti wrote:
> There is no special status for an Action beyond that though, no
> values set on it by Struts, that sort of thing.  Just instantiate and
> execute as you would any other class.


I feel obliged to point out, though, that if you have a lot of behavior in
your actions such that this is an initially attractive solution, you may
want to reassess your architecture and possibly refactor.  Should you set up
an inheritance tree of actions?  Should you factor some of that logic out
into classes which aren't even dependent upon Struts?  I always aim to keep
my actions light weight, mostly responsible for managing the translation
between HTTP request parameters (fundamentally Strings) and the application
object model (either other primitives converted from the strings, or model
objects looked up based on the parameter values, etc), and session
management.

This helps write code that is more easily unit tested, and also plays much
better with the overall "ecosystem" we find ourselves developing in now that
we use Spring and Hibernate extensively.  Things like proper transaction
management in Spring/Hibernate are pretty much predicated on limiting the
behavior in your action and putting more of it behind one "model" method
which can be marked with transaction semantics.  It also lends itself better
to mixed mode applications where you want the same basic code to handle both
online (web) processes as well as offline (batch file processing, etc).

Just something to keep in mind...

Joe


--
Joe Germuska
[EMAIL PROTECTED] * http://blog.germuska.com

"The truth is that we learned from João forever to be out of tune."
-- Caetano Veloso

Reply via email to