ページ上でいくつかのajax更新を実行し、@ViewScopedManagedBeanを使用するアプリがあります。ユーザーがフォームを送信すると、アクションメソッドはJspにリダイレクトされ、Cewolfライブラリを使用してグラフを表示します。正常に動作しますが、Beanはこのリダイレクトを生き残るようです。ユーザーがJspの[戻る]ボタンをクリックすると、[レンダリングされたajax]フィールドはすべて空白になりますが、[executeajax]フィールドには前の値が表示されます。次に、ajaxを更新すると、「空白」フィールドが以前の値でレンダリングされます...
リダイレクトコード:
//save
ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
Map<String, Object> sessionMap = externalContext.getSessionMap();
sessionMap.put("integrator", dataSource);
try
{
FacesContext.getCurrentInstance().getExternalContext().redirect("graph.jsp");
} catch (IOException ex)
{
Logger.getLogger(EquationsBean.class.getName()).log(Level.SEVERE, null, ex);
}
そして私のindex.xhtmlのいくつか:
<h:selectOneMenu value="#{equationsBean.equationsToSolve}" id="neqs">
<f:selectItems value = "#{equationsBean.eqsChoose}" />
<f:ajax render="equationForm" execute ="neqs" listener="# {equationsBean.equationsSelected}"/>
</h:selectOneMenu>
私が期待しているのは、Jspにリダイレクトすると、ユーザーが戻るボタンを押すとBeanが停止し、フォームが新鮮になることです。キャッシュを無効にするフィルターをすでに試しましたが、非常に奇妙な動作をします。また、私はJspタグを使用せず、faceletのみを使用しており、一部のコンポーネントには、Beanの状態に応じて「rendered」属性があります。.xhtml全体を投稿する必要がありますが、少し大きいです...
誰かが私がこの振る舞いを理解するのを手伝ってくれるならありがとう!