如何在struts2中配置范围模型驱动的拦截器?
我正在尝试在我的应用程序中实现范围模型驱动的拦截器,但是我收到了一个错误。
以下是错误:
Caused by: Attribute "class" must be declared for element type "interceptor-ref".
Struts.xml代码:
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<action name="dwsCreate" method="dwsCreate" class="com.struts.action.DispatchUserAction">
<interceptor-ref name="scoped-model-driven">
<param name="scope">session</param>
<param name="name">objWorksheetActionForm</param>
<param name="className">com.struts.actionform.WorksheetActionForm1</param>
</interceptor-ref>
<interceptor-ref name="basicStack" />
<result name="dwsCreate">/jsp/dwsV2/dwsCreate.jsp</result>
<result name="error">/WEB-INF/jsp/SessionExpired.jsp</result>
</action>
</package>
我做错了什么?请帮忙。感谢。
答案 0 :(得分:0)
我试过这个并且有效。
<interceptor-ref name="defaultStack">
<param name="scopedModelDriven.scope">session</param>
<param name="scopedModelDriven.name">objWorksheetActionForm</param>
<param name="scopedModelDriven.className">com.struts.actionform.WorksheetActionForm1</param>
</interceptor-ref>
还有一件很重要的事情,我在其他任何地方都找不到:
当你尝试实现ScopedModelDriven Interceptor时,不要在Action类中写(如下所示)
WorksheetActionForm1 obj = new WorksheetActionForm1();
它创建一个新对象并重写会话值。 而是创建一个空对象。
WorksheetActionForm1 obj = null;
当bean在会话中持久化时,它会将属性从堆栈复制到bean对象。