Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Struts 2 »

Re: [s2] getting servletContext in actions

Tom Schneider

2007-01-31

Replies:

It would be very easy to create a Spring FactoryBean for this.
(Checkout the Spring Documentation if that doesn't make sense) Then, to
access the servlet context, just do a:

ServletContext servletContext = ServletActionContext.getServletContext();

The FactoryBean would allow you to use dependency injection in spring to
inject the servlet context into any spring bean. (I'm doing a similar
thing with some of the our legacy services and components) You could
even convert the ServletContext into a Map to decouple yourself from the
servlet API. That way your process beans would only be dependent on a
Map instead of a ServletContext. Keep in mind that the
ServletActionContext is a thread local, so it must be executed from
within the context of a webwork request.
Tom


Jeffrey Hau wrote:
> Hi Joe,
> Thanks for the helpful information. I am just wondering is it possible
> to get the ServletContext object in my spring applicationContext.xml?
> What i am trying to do now is to create a Resource object
> (ServletContextResource) and inject into a service class and then use
> this service class in a struts action. At the moment, I have to pass
> in the resource path (as a string) into the action, instantiate the
> ServletContextResource in the action then pass it to the service class.
>
> many thanks,
>
> Jeff
>
> On 31 Jan 2007, at 12:53, Joe Germuska wrote:
>
>> You need to make sure that your action is passing through an
>> interceptor-stack that includes ServletConfigInterceptor
>>
>> http://struts.apache.org/2.x/core/apidocs/org/apache/struts2/interceptor/ServletConfigInterceptor.html
>>
>>
>>
>> The struts-default package does include this.
>>
>> http://struts.apache.org/2.x/docs/struts-defaultxml.html
>>
>> Another thing you can do is call the static method
>> ServletActionContext.getServletContext() but this would be harder to
>> support
>> in a unit testing environment. If you implement
>> ServletContextAware, then
>> you could provide a mock ServletContext implementation in your unit test
>> setup, while you'd have a lot more awkward setup to do to make sure that
>> ServletActionContext.getServletContext was prepared to return a usable
>> value.
>>
>> Joe
>>
>>
>> On 1/31/07, Nagraj Rao <nagraj.rao@(protected):
>>>
>>> were u actually able to get the servletContext Object thru
>>> servletContextAware?? I'd tried it but couldn't get it :(
>>> do we need to do any additional stuff for that??
>>>
>>> ----- Original Message -----
>>> From: "Jeffrey Hau" <jh398@(protected)>
>>> To: "Struts Users Mailing List" <user@(protected)>
>>> Sent: Wednesday, January 31, 2007 4:55 PM
>>> Subject: [s2] getting servletContext in actions
>>>
>>>
>>> > Hi,
>>> > If i need to get a servletContext object in my action class, is
>>> > implementing the ServletContextAware interface the standard way
>>> of doing
>>> > this? Is there any other alternatives?
>>> >
>>> > thanks,
>>> >
>>> > Jeff
>>> >
>>> > ---------------------------------------------------------------------
>>> > To unsubscribe, e-mail: user-unsubscribe@(protected)
>>> > For additional commands, e-mail: user-help@(protected)
>>> >
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: user-unsubscribe@(protected)
>>> For additional commands, e-mail: user-help@(protected)
>>>
>>>
>>
>>
>> --Joe Germuska
>> Joe@(protected)
>>
>> "The truth is that we learned from Jo?o forever to be out of tune."
>> -- Caetano Veloso
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)

©2008 junlu.com - Jax Systems, LLC, U.S.A.