You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Musachy Barroso (JIRA)" <ji...@apache.org> on 2009/08/16 19:52:59 UTC

[jira] Resolved: (WW-3221) ServletContextAware interface ignored for custom ActionMapper

     [ https://issues.apache.org/struts/browse/WW-3221?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Musachy Barroso resolved WW-3221.
---------------------------------

    Resolution: Not A Problem

There are only two ways to get access to the context, one is using @Inject as you mentioned, the other, which I would recommend is to use
ServletActionContext.getServletContex()

> ServletContextAware interface ignored for custom ActionMapper
> -------------------------------------------------------------
>
>                 Key: WW-3221
>                 URL: https://issues.apache.org/struts/browse/WW-3221
>             Project: Struts 2
>          Issue Type: Improvement
>    Affects Versions: 2.1.6
>         Environment: Windows XP, Jetty (under Google App Engine java dev environment).
>            Reporter: Todd Owen
>            Priority: Minor
>
> I am implementing an ActionMapper by extending DefaultActionMapper. I would like to access the ServletContext, where some application-specific configuration is stored. Since the docs for the ServletContextAware interface say that it is: "for components that have a dependence on the Servlet context", I implemented this interface but it's method (setServletContext) is never called. Here is the class:
> 	public class RexMapper
> 	extends org.apache.struts2.dispatcher.mapper.DefaultActionMapper
> 	implements ServletContextAware {	
> 		public RexMapper() {
> 			// This constructor *is* called.
> 		}
> 		@Override
> 		public void setServletContext(ServletContext arg0) {
> 			// This method is *not* called.
> 		}
> 	}
> In struts.xml:
> 	<bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="rexMapper" class="org.technologyforchange.rex.RexMapper"/>
> I have been able to work around this by using the internal dependency injection framework: I add a javax.servlet.ServletContext parameter to the constructor, and annotate it with @com.opensymphony.xwork2.inject.Inject. However, I understand that developers are encouraged not to rely on the internal injection framework. Therefore, I'm reporting this to JIRA.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.