スコープインターセプターを使用して、Struts2(2.2.3.1)アプリケーションにウィザードのような機能を実装したいと思います。
私の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」は「listA」に入力する「actionB」に送信します。しかし、戻るボタンを押して(resultA.jspに到達すると、サーバーに新しい要求を行わずに、resultA.jspがキャッシュからブラウザーにロードされるだけです)、リストに変更を加えると、新しいエントリがに追加されます。完全に置き換えるのではなく、「listA」。
'listA'を変更する'resultA.jsp'のコードは
<s:iterator value="listB" status="statusB">
<li>
<a title="%{varA}">
<s:checkbox name="listA.id" fieldValue="%{varB}" />
</a>
</li>
</s:iterator>
私はSessionAwareを実装しておらず、listAをセッションにフィードするためにscopeInterceptorに依存しているだけです。
リクエスト内の「listA」を新しいリストに置き換えるにはどうすればよいですか?