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