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]

Reply via email to