JSF の ELflash を使用中に予期しない動作が発生しました。2 つのページ (page1 と page2) があり、各ページには独自の managedVean (Bean1 と Bean2) があります。page1 には、Bean1 からこのメソッドを呼び出すボタンがあります。
ELFlash.getFlash().put("xxx", "Test");
return "page2?faces-redirect=true";
page2 では、フラッシュから値を回復するために、コンストラクターに次のステートメントがあります。
Map<String,Object> flash = ELFlash.getFlash();
for(String s : flash.keySet()){
if(s.equals("xxx")){
myVariable=true;
}
}
そして、page1 のボタンをクリックすると、page2 にリダイレクトされ、変数 myVariable が true に設定されます。問題は、その後、ページを更新したり、別のタブでページを再度開いたりすると、myVariable を true に設定する if ステートメントに入力し続けることです。コンソールを見ると、Tomcat からの警告が表示されます。
03/05/2013 08:57:56 com.sun.faces.context.flash.ELFlash setCookie AVISO: JSF1095: フラッシュ用の送信 Cookie を設定しようとした時点で、応答は既にコミットされていました。フラッシュに保存された値は、次のリクエストでは使用できません。
私が理解していることでは、リクエストが終了した後、フラッシュはその状態をきれいにする必要があります。または、手動でクリーニングする必要がありますか?