我想在我的Struts2(2.2.3.1)應用程序中使用Scope攔截器實現類似嚮導的功能。範圍攔截器Struts 2:後退按鈕行爲
我struts.xml的文件如下:
<action name="actionA class="classA" method="methodA">
<interceptor-ref name="basicStack" />
<interceptor-ref name="scope">
<param name="session">stringA</param>
<param name="key">consultGuides</param>
<param name="type">start</param>
</interceptor-ref>
<result>/resultA.jsp</result>
</action>
<action name="actionB" class="classA" method="methodB">
<interceptor-ref name="scope">
<param name="session">stringA, listA</param>
<param name="key">consultGuides</param>
</interceptor-ref>
<interceptor-ref name="basicStack" />
<result>/resultB.jsp</result>
</action>
....
....
「resultA.jsp」 提交給 「actionB」 填充 「listA的」。但是現在,如果我按下後退按鈕(到達resultA.jsp,其中resultA.jsp剛剛從其緩存中加載到瀏覽器而沒有向服務器發出新請求)並對該列表進行任何更改,則新條目將追加到「listA」而不是完全取代它。
在「resultA.jsp」修飾「listA的」代碼是
<s:iterator value="listB" status="statusB">
<li>
<a title="%{varA}">
<s:checkbox name="listA.id" fieldValue="%{varB}" />
</a>
</li>
</s:iterator>
我不落實SessionAware,只是依靠scopeInterceptor來養活listA的到會話。
如何使用請求中的新列表替換「listA」?
我試圖從服務器上按下後退按鈕來獲取頁面。但即使手動刷新頁面也不起作用,因爲會話仍在繼續,而新值僅附加到會話中已有的變量。 – Manu