I'm fairly new to the S2 model and assumed the same IoC benefits applied to interceptors that apply to actions (i.e. my interceptor didn't need to know about a session if it was SessionAware). However, I might have been overjealous with the whole IoC concept. ;) I have changed my interceptors to use the http session to exchange data between themselves dependency injection.
----- Original Message ---- From: Don Brown <[EMAIL PROTECTED]> To: Struts Users Mailing List <user@struts.apache.org>; Jon Wilmoth <[EMAIL PROTECTED]> Sent: Monday, December 18, 2006 11:46:36 AM Subject: Re: S2 - Proper way interceptors to interact w/Session On 12/18/06, Jon Wilmoth <[EMAIL PROTECTED]> wrote: > I'm working on a custom S2 Interceptor and I'm not sure what the best way to > interact with the session and/or other Interceptors for that matter is. > First the session. I read > http://struts.apache.org/2.x/docs/how-do-we-get-access-to-the-session.html > and I tried applying the concept of using a SessionAware dependency injection > on my custom interceptor (i.e. public class MyCustomInterceptor extends > AbstractInterceptor implements SessionAware). I added the "servlet-config" > interceptor to my interceptor stack prior to my custom interceptor. > Unfortunately, the ServletConfigInterceptor class only injects dependencies > on the action. This seems me that the only *current* way for an interceptor > to interact with the session is through > ServletActionContext.getRequest().getSession(); > Yep, ServletActionContext.getRequest().getSession() is currently the best way to do this. > Along the same train-of-thought, I'm also working on another custom > interceptor that uses the output of a previous custom interceptor to do it's > work. After coming to the realization above I thought I might be able to use > the ActionInvocation to get ahold of the downstream interceptors and check to > see if they implemented a dependency injection interface similar to > SessionAware. Unfortunately, one can only access the action via the > ActionInvocation. Is the lack of access to other interceptors within an > interceptor intentional? Is it bad to try and spread the notion of > dependency injection on actions to interceptors? > > <interceptor-stack name="baseStack"> > ... > <interceptor-ref name="createSession"/> > <!-- populate SessionAware, XyzAware actions --> > <interceptor-ref name="servlet-config"/> > <!-- Custom interceptor to populate CurrentUserAware actions [and > downstream interceptors?] --> > <interceptor-ref name="currentUser"/> > <!-- Custom interceptor to load currentUser's preferences...implements > CurrentUserAware --> > <interceptor-ref name="userPrefs"/> > ... > </interceptor-stack> Hmm...do we really need to add IoC to interceptors? What benefit would this provide over storing and retrieving objects from the ActionContext? Don > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]