私は自家製の MVC 実装を持っています。次のようなControllerServlet:
/controller?cmd=EditUser&userid=55
この URL から、コントローラーはインスタンスを作成し、表示する結果ページ (例: ) を返すメソッドをEditUserCommand.class
呼び出します。execute()
user.jsp
次に、コントローラ サーブレットは次のことを行います。
getRequestDispatcher(resultPage).forward(request, response);
...結果のページが表示されます。
コントローラーが行うことの 1 つは、メッセージ (エラー、情報など) を要求属性として設定することです。例えば:
request.setAttribute("infoMessage", "User was edited successfully.");
そして、そのメッセージはページのリクエストから引き出されてuser.jsp
表示されます。
正常に動作します。
ここに私の問題があります。
時々、私のコマンドはページを返さず、結果のuser.jsp
ように URL を返します。cmd=ShowUser&userid=55
これは、ユーザーの閲覧権限など、最終ページを表示する前に確認したいことがあるためです。
これを行うと、リクエストに配置した「infoMessage」は表示されません。これは、結果が新しいリクエストであるサーブレットへの新しい呼び出しを行う URL であるためです。新しいリクエストは、最初のリクエストからのリクエスト属性を維持しません。これは理にかなっていますが、私はこれが起こるとは予想していませんでした。
元のリクエストの結果の最終ページに実際に表示されるまで、リクエスト変数を「存続」させるにはどうすればよいですか?
提案やアドバイスをいただければ幸いです。参考までに、アプリ全体を書き直して、JSF の Struts、Spring MVC などに移行することはできません。それはオプションではありません。
ありがとう!
ロブ