I am hoping that they will include this in the next Spring release and give me some credit. It appears to work really well. I developed this because I am on a servlet 2.2 container and so I can't use the openSessionInViewFilter. The code below will allow you to run all your struts stuff through spring giving you the advantage of wiring etc. .
The instructions are in the Javadoc included in the code.
Code:
/*
 * StrutsController.java
 * 
 * 
 */
package org.springframework.web.struts;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Map;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionServlet;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContextAware;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

/**
 * @author Keith Garry Boyce
 * 
 * <p>
 * Concrete StrutsController implementation that provides proxy to struts
 * ActionServlet. This allows ActionServlet to be configured through Spring
 * mechanism. This controller also registers the root WebApplicationContext in
 * the servletContext.
 * </p>
 * 
 * <p>
 * &#123;@link ActionSupport ActionSupport&#125;,
 * &#123;@link DispatchActionSupport DispatchActionSupport&#125;and
 * &#123;@link LookupActionSupport LookupActionSupport&#125;will have access to this
 * WebApplicationContext.
 * </p>
 * 
 * <p>
 * <b>Here is an example of how to wire struts though spring. </b>
 * </p>
 * <p>
 * It specifically addresses the need to provide Open Session In View pattern
 * for struts.
 * </p>
 * <p>
 * 
 * <pre>
 * 
 *      <bean id=&quot;strutsController&quot;
 *         class=&quot;org.springframework.web.struts.StrutsController&quot;
 *         singleton=&quot;true&quot;&gt;
 *           <property name=&quot;initParameters&quot;&gt;
 *              <map&gt;
 *                  <entry key=&quot;config&quot;&gt;
 *                     <value&gt;/WEB-INF/struts-config.xml</value&gt;
 *                  </entry&gt;
 *              </map&gt;
 *           </property&gt;
 *      </bean&gt;
 * 
 *      <bean id=&quot;handlerMapping&quot; 
 *            class=&quot;org.springframework.web.servlet.handler.SimpleUrlHandlerMapping&quot;&gt;
 *           <property name=&quot;interceptors&quot;&gt;
 *             <list&gt;
 *                 <ref bean=&quot;openSessionInViewInterceptor&quot;/&gt; 
 *             </list&gt; 
 *           </property&gt;
 *           <property name=&quot;urlMap&quot;&gt;
 *             <map&gt;
 *               <entry key=&quot;/**&quot;&gt;<ref bean=&quot;strutsController&quot;/&gt;</entry&gt; 
 *             </map&gt; 
 *           </property&gt; 
 *      </bean&gt; 
 *    
 * </pre>
 * 
 * </p>
 *  
 */
public class StrutsController extends AbstractController implements
        ApplicationContextAware, InitializingBean &#123;
    private ActionServlet actionServlet;

    private Map initParameters;

    /*
     * &#40;non-Javadoc&#41;
     * 
     * @see org.springframework.web.servlet.mvc.AbstractController#handleRequestInternal&#40;javax.servlet.http.HttpServletRequest,
     *      javax.servlet.http.HttpServletResponse&#41;
     */
    protected ModelAndView handleRequestInternal&#40;HttpServletRequest request,
            HttpServletResponse response&#41; throws Exception &#123;
        actionServlet.doGet&#40;request, response&#41;;
        return null;
    &#125;

    /*
     * &#40;non-Javadoc&#41;
     * 
     * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet&#40;&#41;
     */
    public void afterPropertiesSet&#40;&#41; throws Exception &#123;
        actionServlet = new ActionServlet&#40;&#41;;

        ServletConfig servletConfig = new MyServletConfig&#40;&#41;;
        actionServlet.init&#40;servletConfig&#41;;
        getWebApplicationContext&#40;&#41;.getServletContext&#40;&#41;.setAttribute&#40;
                WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
                getWebApplicationContext&#40;&#41;&#41;;
    &#125;

    /**
     * Sets servlet initialization parameters for ActionServlet
     * 
     * @param initParameters
     *            The initParameters to set.
     */
    public final void setInitParameters&#40;Map initParameters&#41; &#123;
        this.initParameters = initParameters;
    &#125;

    private class MyServletConfig implements ServletConfig &#123;

        /*
         * &#40;non-Javadoc&#41;
         * 
         * @see javax.servlet.ServletConfig#getInitParameter&#40;java.lang.String&#41;
         */
        public String getInitParameter&#40;String configParameter&#41; &#123;
            return &#40;String&#41; initParameters.get&#40;configParameter&#41;;
        &#125;

        /*
         * &#40;non-Javadoc&#41;
         * 
         * @see javax.servlet.ServletConfig#getInitParameterNames&#40;&#41;
         */
        public Enumeration getInitParameterNames&#40;&#41; &#123;
            return new Hashtable&#40;initParameters&#41;.keys&#40;&#41;;
        &#125;

        /*
         * &#40;non-Javadoc&#41;
         * 
         * @see javax.servlet.ServletConfig#getServletContext&#40;&#41;
         */
        public ServletContext getServletContext&#40;&#41; &#123;
            return getWebApplicationContext&#40;&#41;.getServletContext&#40;&#41;;
        &#125;

        /*
         * &#40;non-Javadoc&#41;
         * 
         * @see javax.servlet.ServletConfig#getServletName&#40;&#41;
         */
        public String getServletName&#40;&#41; &#123;
            return this.getClass&#40;&#41;.getName&#40;&#41;;
        &#125;

    &#125;

&#125;