如何在struts2中配置范围模型驱动的拦截器

时间:2014-05-30 15:10:00

标签: java struts2 struts

如何在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>

我做错了什么?请帮忙。感谢。

1 个答案:

答案 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对象。