Details
-
Improvement
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
2.0.9
-
None
Description
When an action is both SessionAware and ActionAware the ServletConfigInterceptor first calls setSession and then setApplication, while to me it seems more logical to do this the other way round.
Consider the following use case: a common superclass CustomerAction is used for actions that do something with the 'current customer' which is stored in session context. Everytime an action like this is called, a customer object is automatically loaded from the session into a field of the action object (this is done during 'setSession' time), however, part of this operation is to check with the database whether some customer properties need to be updated. The database is stored as a data source (or Hibernate session factory) in the application context.
Unfortunately, setApplication has not yet been called, hence the action cannot perform this check.
Granted, there are several workarounds to this particular example: the database check could be done as part of the 'execute', or as part of a 'prepare', or the data source could be stored in a static variable,...
I cannot think of a use case which would be broken by changing this order - why would setApplication possibly need information from the
session?