我的问题有点基本,因为我仍在学习 Struts2 和 Spring 以及它们的集成。当我们在 struts.xml 中定义一个拦截器时,例如
<interceptors>
<interceptor name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>
<interceptor-stack name="simpleStack">
<interceptor-ref name="validation">
<param name="excludeMethods">input,back,cancel,execute</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="simpleStack"/>
如果在 applicationContext.xml 我有:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="user" class="struts.model.User"/>
<bean id="registerUserAction" class="struts.actions.UserInformationAction">
<property name="userBean" ref="user"/>
</bean>
<bean id="chooseUsernamePasswordAction" class="struts.actions.ChooseUsernameAction">
<property name="userBean" ref="user"/>
</bean>
</beans>
如果没有定义拦截器,用户 bean 在两个操作(registerUserAction -> JSP -> chooseUsernamePasswordAction)中都是持久的,我可以访问这些属性。一旦引入了拦截器,看起来这些值就被清空了。
- 首先从我读到的看起来我可能做错了。即集成了 Spring 的所有这些项目都处于单例默认模式,这可能是不正确的,因为多个用户将注册,因此每个用户都必须有自己的 Action/User bean。
- 正在发生什么或需要做什么来传递信息并使拦截器正常工作。