Hello Burton,

I tested following and seems works but I did not tested if objects are 
equal by reference (you may get different objects e.g. when scope is 
prototype):

```java
public class MYStrutsPrepareFilter implements Filter {


        public void doFilter(ServletRequest req, ServletResponse res, 
FilterChain chain)
                        throws IOException, ServletException {

                ActionContext actionContext = ActionContext.getContext();
                if(null != actionContext) {
                        ValueStack stack = actionContext.getValueStack();
                        StrutsSpringObjectFactory objectFactory = 
(StrutsSpringObjectFactory) 
actionContext.getInstance(ObjectFactory.class);
                        try {
                                
stack.setValue("#application['MYSpringObject']", 
objectFactory.buildBean("myBeanName",null));
                        } catch (Exception e) {
                                e.printStackTrace();
                        }
                }
                chain.doFilter(req, res);
        }
}
```

```xml
     <filter>
         <filter-name>struts2prepare</filter-name>
         <filter-class>...StrutsPrepareFilter</filter-class>
     </filter>
     <filter>
         <filter-name>MYStrutsPrepareFilter</filter-name>
         <filter-class>MYStrutsPrepareFilter</filter-class>
     </filter>
     <filter>
         <filter-name>struts2execute</filter-name>
         <filter-class>...StrutsExecuteFilter</filter-class>
     </filter>
     <filter-mapping>
         <filter-name>struts2prepare</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
     <filter-mapping>
         <filter-name>MYStrutsPrepareFilter</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
     <filter-mapping>
         <filter-name>struts2execute</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
```

```jsp
<s:property value="#application.MYSpringObject.myProperty" />
```

Hope this helps!
Yasser.

On 9/30/2017 1:29 AM, Burton Rhodes wrote:
> I have all of these settings in place, but your comments spurred the idea
> to have a "BaseAction" class where I autowire my object
> (MyApplicationSettings.java) and then extend all of my Actions from this
> class.
> 
> Just for my info though... My original line of thinking was to be able to
> access the object with the following:
> 
> Map application = (Map) ActionContext.getContext().get("application");
> application.get("myApplicationSettings");
> ---or---
> <s:property value="#application.myApplicatoinSettings" />
> 
> I just couldn't figure out a way to put the object in the struts
> application scope within a listener during startup.  Does that make sense?
> 
> On Fri, Sep 29, 2017 at 11:50 AM, Adam Brin <ab...@digitalantiquity.org>
> wrote:
> 
>> it’s a mixture of things:
>>
>> * Struts.xml should be setup to know about spring:
>>      <constant name="struts.objectFactory"
>>          value="org.apache.struts2.spring.StrutsSpringObjectFactory" />
>>      <constant name="struts.objectFactory.spring.autoWire.alwaysRespect"
>> value="true" />
>>      <constant name="struts.objectFactory.spring.autoWire" value="name" />
>>
>> * register the appropriate application listeners
>>
>> * add the @Scope variables  to controllers
>>
>> --
>> _________________________________________________________
>> Adam Brin
>> Director of Technology, Digital Antiquity
>> 480.965.1278
>>
>>> On Sep 29, 2017, at 9:03 AM, Burton Rhodes <burtonrho...@gmail.com>
>> wrote:
>>>
>>> How do you put a Spring object into the Struts application scope Map on
>>> startup of a web application?  I have 2 listeners that I thought would be
>>> the usual suspects, but have not had success yet.
>>>
>>> I have a ServletContextListener class but on the
>>> contextInitialized(ServletContextEvent event) method, my spring bean has
>>> not been created yet.
>>>
>>> Secondly, I have a Spring "ApplicationListener", but in the
>>> onApplicationEvent(ApplicationEvent event) method,
>>> "ServletActionContext.getContext()" is null.  How is this traditionally
>>> accomplished?
>>>
>>> Thanks!
>>> Burton
>>
>>
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to