Do you have any other idea how it's supposed to be solved? An
interface with a struts.xml entry to bridge Spring bean with a Struts
scope?


Regards
-- 
Łukasz
+ 48 606 323 122 http://www.lenart.org.pl/

2017-10-01 5:16 GMT+02:00 Burton Rhodes <burtonrho...@gmail.com>:
> Nice - I'll take a closer look.  That seems like a decent solution
>
>
> On Sat, Sep 30, 2017 at 4:22 AM, Yasser Zamani <yasser.zam...@live.com>
> wrote:
>
>> 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
>>

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

Reply via email to