Class ActionAutowiringInterceptor

java.lang.Object
org.apache.struts2.interceptor.AbstractInterceptor
org.apache.struts2.spring.interceptor.ActionAutowiringInterceptor
All Implemented Interfaces:
Serializable, ConditionalInterceptor, Interceptor, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware

public class ActionAutowiringInterceptor extends AbstractInterceptor implements org.springframework.context.ApplicationContextAware
TODO: Give a description of the Interceptor. TODO: Describe the parameters for this Interceptor. TODO: Discuss some possible extension of the Interceptor.
 
 <!-- TODO: Describe how the Interceptor reference will effect execution -->
 <action name="someAction" class="com.examples.SomeAction">
      TODO: fill in the interceptor reference.
     <interceptor-ref name=""/>
     <result name="success">good_result.ftl</result>
 </action>
 
 

Autowires action classes to Spring beans. The strategy for autowiring the beans can be configured by setting the parameter on the interceptor. Actions that need access to the ActionContext can implements the ApplicationContextAware interface. The context will also be placed on the action context under the APPLICATION_CONTEXT attribute.

Author:
Simon Stewart, Eric Hauser
See Also:
  • Constructor Details

    • ActionAutowiringInterceptor

      public ActionAutowiringInterceptor()
  • Method Details

    • setAutowireStrategy

      public void setAutowireStrategy(Integer autowireStrategy)
      Parameters:
      autowireStrategy - the autowire strategy
    • intercept

      public String intercept(ActionInvocation invocation) throws Exception

      Looks for the ApplicationContext under the attribute that the Spring listener sets in the servlet context. The configuration is done the first time here instead of in init() since the ActionContext is not available during Interceptor initialization.

      Autowires the action to Spring beans and places the ApplicationContext on the ActionContext

      TODO: Should this check to see if the SpringObjectFactory has already been configured instead of instantiating a new one? Or is there a good reason for the interceptor to have it's own factory?

      Specified by:
      intercept in interface Interceptor
      Specified by:
      intercept in class AbstractInterceptor
      Parameters:
      invocation - the action invocation
      Throws:
      Exception - in case of any errors
    • setApplicationContext

      public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext) throws org.springframework.beans.BeansException
      Specified by:
      setApplicationContext in interface org.springframework.context.ApplicationContextAware
      Parameters:
      applicationContext - the application context
      Throws:
      org.springframework.beans.BeansException - in case of errors
    • getApplicationContext

      protected org.springframework.context.ApplicationContext getApplicationContext()
      Returns:
      the application context