Hi Lukasz, Thank you for your reply.
I defined my action like so: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <include file="struts-default.xml"/> <constant name="struts.devMode" value="true" /> <package name="com.xxxx.action" extends="struts-default" namespace="/"> <action name="userAction" class="UserRegisterAction" > <result name="success">confirmRegister.jsp</result> <result name="input">/register.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts> However this will throw an exception: SEVERE: Dispatcher initialization failed Unable to load configuration. - action - file:/D:/projects/BaseApp/out/artifacts/BaseApp_war_exploded/WEB-INF/classes/struts.xml:22:60 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:70) at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:967) at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:435) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:479) at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4841) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5535) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652) at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1809) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) IntelliJ Idea reports that "class="UserRegisterAction" cannot be resolved and the only way to fix it is use the full class name. I'm stumped! Chris -----Original Message----- From: Lukasz Lenart [mailto:lukaszlen...@apache.org] Sent: Sunday, September 6, 2015 12:37 AM To: Struts Users Mailing List Subject: Re: Spring Injection Strange behaviour How do you declare the action in struts.xml? Because instead full class name you must use the id from applicationContext.xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="secure" namespace="/secure" extends="default"> <action name="user" class="userAction"> <result>success.jsp</result> </action> </package> </struts> https://struts.apache.org/docs/spring-plugin.html#SpringPlugin-InitializingActionsfromSpring Regards -- Ćukasz + 48 606 323 122 http://www.lenart.org.pl/ 2015-09-05 14:47 GMT+02:00 Chris <crisp...@gmx.us>: > I'm trying to use the Spring plugin to inject a dependency into my action at > runtime. This is the first time I've tried this with Struts2 so I may have > missed something but I'm stumped because I can see the dependency is injected > but then the object is later null when I need to use it. Here is my action > class code: > > public class UserRegisterAction extends ActionSupport { > private User user = new User(); > > @Override > public String execute(){ > getUserService().saveUser(user); > return "success"; > } > > public UserServiceImpl getUserService(){ > return userService; > } > > UserServiceImpl userService; > public void setUserService(UserServiceImpl us){ > this.userService = us; > } > } > > Using the debugger I can see that upon startup "setUserService is called and > this.userService is set, so the injection appears to be working ok, but when > the execute method is called when the page is submitted userService is null. > I'm quite new to Struts but I don't understand how my userService is being > null. > > Can anyone see what I am missing? > > > My applicationContext: > > > <?xml version="1.0" encoding="UTF-8"?> > > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:tx="http://www.springframework.org/schema/tx" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans.xsd > http://www.springframework.org/schema/tx > http://www.springframework.org/schema/tx/spring-tx.xsd" > default-autowire="byName"> > > <bean > class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" > /> > > <bean > class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> > > <bean id="entityManagerFactory" > class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> > <property name="dataSource" ref="dataSource" /> > <property name="jpaVendorAdapter"> > <bean > class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> > <property name="databasePlatform" > value="org.hibernate.dialect.MySQL5Dialect" /> > <property name="database" value="MYSQL" /> > <property name="showSql" value="true" /> > </bean> > </property> > </bean> > > <bean id="dataSource" > class="org.springframework.jdbc.datasource.DriverManagerDataSource"> > <property name="driverClassName" value="org.gjt.mm.mysql.Driver" /> > <property name="url" value="jdbc:mysql://127.0.0.1:3306/baseapp" /> > <property name="username" value="xxxxxx" /> > <property name="password" value="xxxxxx" /> > </bean> > > <bean id="transactionManager" > class="org.springframework.orm.jpa.JpaTransactionManager"> > <property name="entityManagerFactory" ref="entityManagerFactory" /> > </bean> > > <tx:annotation-driven transaction-manager="transactionManager" /> > > <bean id="userService" class="com.xxxxx.service.UserServiceImpl" > scope="prototype"/> > > <bean id="userAction" class="com.xxxxxx.action.UserRegisterAction"> > <property name="userService" ref="userService"/> > </bean> > > </beans> > > > Web.xml: > > <?xml version="1.0" encoding="UTF-8"?> > <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee > http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" > version="3.1"> > > <filter> > <filter-name>struts2</filter-name> > > <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> > </filter> > > <filter-mapping> > <filter-name>struts2</filter-name> > <url-pattern>/*</url-pattern> > </filter-mapping> > > <listener> > > <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> > </listener> > </web-app> > > > --------------------------------------------------------------------- > 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