org.springframework.web.struts

## Class DelegatingRequestProcessor

- java.lang.Object
- - org.apache.struts.action.RequestProcessor
  - - org.springframework.web.struts.DelegatingRequestProcessor

- Deprecated.
  as of Spring 3.0

      @Deprecated
      public class DelegatingRequestProcessor
      extends org.apache.struts.action.RequestProcessor

  Subclass of Struts's default `RequestProcessor` that looks up Spring-managed Struts `Actions` defined in `ContextLoaderPlugIn's` `WebApplicationContext` (or, as a fallback, in the root `WebApplicationContext`).

  In the Struts config file, you can either specify the original `Action` class (as when generated by XDoclet), or no `Action` class at all. In any case, Struts will delegate to an `Action` bean in the `ContextLoaderPlugIn` context.

      <action path="/login" type="myapp.MyAction"/>

  or

      <action path="/login"/>

  The name of the `Action` bean in the `WebApplicationContext` will be determined from the mapping path and module prefix. This can be customized by overriding the `determineActionBeanName(org.apache.struts.action.ActionMapping)` method.

  Example:

  - mapping path "/login" -> bean name "/login"
  - mapping path "/login", module prefix "/mymodule" -> bean name "/mymodule/login"

  A corresponding bean definition in the `ContextLoaderPlugin` context would look as follows; notice that the `Action` is now able to leverage fully Spring's configuration facilities:

       <bean name="/login" class="myapp.MyAction">
         <property name="...">...</property>
       </bean>

  Note that you can use a single `ContextLoaderPlugIn` for all Struts modules. That context can in turn be loaded from multiple XML files, for example split according to Struts modules. Alternatively, define one `ContextLoaderPlugIn` per Struts module, specifying appropriate "contextConfigLocation" parameters. In both cases, the Spring bean name has to include the module prefix.

  If you also need the Tiles setup functionality of the original `TilesRequestProcessor`, use `DelegatingTilesRequestProcessor`. As there is just a single central class to customize in Struts, we have to provide another subclass here, covering both the Tiles and the Spring delegation aspect.

  If this `RequestProcessor` conflicts with the need for a different `RequestProcessor` subclass (other than `TilesRequestProcessor`), consider using `DelegatingActionProxy` as the Struts `Action` type in your struts-config file.

  The default implementation delegates to the `DelegatingActionUtils` class as much as possible, to reuse as much code as possible despite the need to provide two `RequestProcessor` subclasses. If you need to subclass yet another `RequestProcessor`, take this class as a template, delegating to `DelegatingActionUtils` just like it.

  Since:
    1.0.2
  Author:
    Juergen Hoeller
  See Also:
    `determineActionBeanName(org.apache.struts.action.ActionMapping)`, `DelegatingTilesRequestProcessor`, `DelegatingActionProxy`, `DelegatingActionUtils`, `ContextLoaderPlugIn`

- - ### Field Summary

    - ### Fields inherited from class org.apache.struts.action.RequestProcessor

      `actions, INCLUDE_PATH_INFO, INCLUDE_SERVLET_PATH, log, moduleConfig, servlet`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DelegatingRequestProcessor()` Deprecated.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected String` | `determineActionBeanName(org.apache.struts.action.ActionMapping mapping)` Deprecated. Determine the name of the `Action` bean, to be looked up in the `WebApplicationContext`.
    `protected org.apache.struts.action.Action` | `getDelegateAction(org.apache.struts.action.ActionMapping mapping)` Deprecated. Return the delegate `Action` for the given mapping.
    `protected WebApplicationContext` | `getWebApplicationContext()` Deprecated. Return the `WebApplicationContext` that this processor delegates to.
    `void` | `init(org.apache.struts.action.ActionServlet actionServlet, org.apache.struts.config.ModuleConfig moduleConfig)` Deprecated.
    `protected WebApplicationContext` | `initWebApplicationContext(org.apache.struts.action.ActionServlet actionServlet, org.apache.struts.config.ModuleConfig moduleConfig)` Deprecated. Fetch ContextLoaderPlugIn's `WebApplicationContext` from the `ServletContext`, falling back to the root `WebApplicationContext`.
    `protected org.apache.struts.action.Action` | `processActionCreate(HttpServletRequest request, HttpServletResponse response, org.apache.struts.action.ActionMapping mapping)` Deprecated. Override the base class method to return the delegate action.

    - ### Methods inherited from class org.apache.struts.action.RequestProcessor

      `destroy, doForward, doInclude, getInternal, getServletContext, internalModuleRelativeForward, internalModuleRelativeInclude, log, log, process, processActionForm, processActionPerform, processCachedMessages, processContent, processException, processForward, processForwardConfig, processInclude, processLocale, processMapping, processMultipart, processNoCache, processPath, processPopulate, processPreprocess, processRoles, processValidate`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### DelegatingRequestProcessor

          public DelegatingRequestProcessor()

      Deprecated.

  - ### Method Detail

    - #### init

          public void init(org.apache.struts.action.ActionServlet actionServlet,
                  org.apache.struts.config.ModuleConfig moduleConfig)
                    throws ServletException

      Deprecated.
      Overrides:
        `init` in class `org.apache.struts.action.RequestProcessor`
      Throws:
        `ServletException`

    - #### initWebApplicationContext

          protected WebApplicationContext initWebApplicationContext(org.apache.struts.action.ActionServlet actionServlet,
                                                        org.apache.struts.config.ModuleConfig moduleConfig)
                                                             throws IllegalStateException

      Deprecated.
      Fetch ContextLoaderPlugIn's `WebApplicationContext` from the `ServletContext`, falling back to the root `WebApplicationContext`.

      This context is supposed to contain the Struts `Action` beans to delegate to.

      Parameters:
        `actionServlet` - the associated `ActionServlet`
        `moduleConfig` - the associated `ModuleConfig`
      Returns:
        the `WebApplicationContext`
      Throws:
        `IllegalStateException` - if no `WebApplicationContext` could be found
      See Also:
        `DelegatingActionUtils.findRequiredWebApplicationContext(org.apache.struts.action.ActionServlet, org.apache.struts.config.ModuleConfig)`, `ContextLoaderPlugIn.SERVLET_CONTEXT_PREFIX`

    - #### getWebApplicationContext

          protected final WebApplicationContext getWebApplicationContext()

      Deprecated.
      Return the `WebApplicationContext` that this processor delegates to.

    - #### processActionCreate

          protected org.apache.struts.action.Action processActionCreate(HttpServletRequest request,
                                                            HttpServletResponse response,
                                                            org.apache.struts.action.ActionMapping mapping)
                                                                 throws IOException

      Deprecated.
      Override the base class method to return the delegate action.
      Overrides:
        `processActionCreate` in class `org.apache.struts.action.RequestProcessor`
      Throws:
        `IOException`
      See Also:
        `getDelegateAction(org.apache.struts.action.ActionMapping)`

    - #### getDelegateAction

          protected org.apache.struts.action.Action getDelegateAction(org.apache.struts.action.ActionMapping mapping)
                                                               throws BeansException

      Deprecated.
      Return the delegate `Action` for the given mapping.

      The default implementation determines a bean name from the given `ActionMapping` and looks up the corresponding bean in the `WebApplicationContext`.

      Parameters:
        `mapping` - the Struts `ActionMapping`
      Returns:
        the delegate `Action`, or `null` if none found
      Throws:
        `BeansException` - if thrown by `WebApplicationContext` methods
      See Also:
        `determineActionBeanName(org.apache.struts.action.ActionMapping)`

    - #### determineActionBeanName

          protected String determineActionBeanName(org.apache.struts.action.ActionMapping mapping)

      Deprecated.
      Determine the name of the `Action` bean, to be looked up in the `WebApplicationContext`.

      The default implementation takes the `mapping path` and prepends the `module prefix`, if any.

      Parameters:
        `mapping` - the Struts `ActionMapping`
      Returns:
        the name of the Action bean
      See Also:
        `DelegatingActionUtils.determineActionBeanName(org.apache.struts.action.ActionMapping)`, `ActionConfig.getPath()`, `ModuleConfig.getPrefix()`