Hi All, I think I know what is the trouble but am still not sure why is this a problem for Struts 2.0. I hope someone from the Struts community can help to shed some light.
The problem is when I use "org.springframework.aop.framework.ProxyFactoryBean" to AOP the Action class. Once I remove the AOP piece such as the following, everything work just fine: <!--<bean id="Menu" class="org.springframework.aop.framework.ProxyFactoryBean"> <property name="proxyInterfaces"> <value>example.IMenu</value> </property> <property name="interceptorNames"> <list> <value>timeLoggingAdvisor</value> </list> </property> <property name="target"> <ref local="MenuTarget"/> </property> </bean> <bean id="MenuTarget" class="example.Menu" singleton="false"/>--> <bean id="Menu" class="example.Menu" singleton="false"/> Any help is appreciated! Thanks, Lee Shih Lee wrote: > > Hi All, > > I have been playing with Struts 2.0 sample application, struts-blank, and > integrates it with Spring 2.x. So far, I have not been having great > success > with it. > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > I have followed all the steps needed to integrate Struts 2.0 with Spring > 2.0. > Here is what I have done so far: > > 1) Included struts2-spring-plugin-2.0.6.jar, spring.jar, > struts2-core-2.0.6.jar and the dependent jars. > > 2) Modified the example.xml to include spring object factory: > > <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts > Configuration 2.0//EN" > "http://struts.apache.org/dtds/struts-2.0.dtd"> > > <struts> > > <constant name="struts.objectFactory" value="spring" /> > <package name="example" namespace="/example" > extends="struts-default"> > > <default-interceptor-ref name="defaultStack"/> > > <action name="helloWorld" class="helloWorld"> > <result>/example/HelloWorld.jsp</result> > </action> > > <action name="Login_*" method="{1}" class="example.Login"> > <result name="input">/example/Login.jsp</result> > <result type="redirect-action">Menu</result> > </action> > > <action name="Menu" class="Menu"> > <result>/example/Menu.jsp</result> > </action> > > <action name="*" class="example.ExampleSupport"> > <result>/example/{1}.jsp</result> > </action> > > <!-- Add actions here --> > </package> > > </struts> > > 3) I have edited the spring applicationContext.xml > > <?xml version="1.0" encoding="UTF-8"?> > > <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" " > http://www.springframework.org/dtd/spring-beans.dtd"> > > <beans default-autowire="autodetect"> > > <!-- =============================== Interceptors > ================================= --> > > <bean id="timeLoggingAdvice" class="advice.TimeLoggingInterceptor"/> > > <!-- =============================== Advisor > ====================================== --> > > <bean id="timeLoggingAdvisor" class=" > org.springframework.aop.support.NameMatchMethodPointcutAdvisor"> > > <property name="mappedNames"> > <list> > <value>execute</value> > </list> > </property> > <property name="advice"> > <ref bean="timeLoggingAdvice"/> > </property> > </bean> > > <!-- ============================== Spring Beans > ================================= --> > > <bean id="helloWorld" class="example.HelloWorld" singleton="false"/> > > <bean id="Menu" class=" > org.springframework.aop.framework.ProxyFactoryBean"> > > <property name="proxyInterfaces"> > <value>example.IMenu</value> > </property> > > <property name="interceptorNames"> > <list> > <value>timeLoggingAdvisor</value> > </list> > </property> > <property name="target"> > <ref local="MenuTarget"/> > </property> > </bean> > > > <bean id="MenuTarget" class="example.Menu" singleton="false"/> > </beans> > > 4) Implemented ModelDriven, Preparable and SessionAware interfaces in > Menu.java: > > package example; > import java.util.Map; > import org.apache.struts2.interceptor.SessionAware; > import com.opensymphony.xwork2.ModelDriven; > import com.opensymphony.xwork2.Preparable; > > /** > > * <code>Set welcome message.</code> > > */ > > public class Menu extends ExampleSupport implements IMenu, ModelDriven, > Preparable, SessionAware { > > private Map _session; > > private User user; > > public String execute() throws Exception { > > return SUCCESS; > > } > > public Object getModel() { > return user; > } > > public void prepare() throws Exception { > if (getSession().get("user") != null) { > user = (User) > getSession().get("user"); > } else { > user = new User(); > } > } > > > public void setSession(Map session) { > _session = session; > } > > > public Map getSession() { > return _session; > } > } > > When I let Spring manages the creation of objects, the methods for the > implemented interfaces such as getModel() and prepare() are not invoked. > If > I change the class="Menu" to class="example.Menu", the interfaces methods > were invoked since I am not letting spring manages object creation. > > Could someone let me know what I may have done wrong? How can I use Spring > and Struts at the same time without losing either functionality? > > Any help is greatly appreciated. > > Thanks! > > Lee > > -- View this message in context: http://www.nabble.com/ModelDriven%2C-Preparable-and-SessionAware-do-not-work-with-Spring-tf3371304.html#a9381353 Sent from the Struts - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]