2011-07-07 17 views
3

Iは、要求スコープのプロパティから読み出された値隠し入力フィールドを有する:JSF:AJAX要求後に要求スコーププロパティをリロード

<h:inputHidden id="myHiddenField" value="#{requestScope['myVar']}" /> 

私は値を変更するのAjaxリクエストをトリガmyVarである。

<p:commandButton value="submit" action="#{myController.doSomething}" update="myHiddenField"> 

しかし、私の入力フィールドにはまだ古い値が含まれています。

どうすればこの問題を解決できますか?

UPDATE: はたぶん私はもう少しそれを説明する必要がある。.. myVarはエラーメッセージ(facesContext.getClientIdsWithMessages())を持つすべての入力フィールドのIDが含まれています。

フォームを(一部の検証エラーを伴って)送信すると、期待どおりに機能します。他の検証エラーでフォームを再送信すると、myVarの値は更新されません。(まだ '古い'エラーのIDが含まれています)検証エラーなしでフォームを再送信すると、myVarが更新されます。 (myVarは現在空です)

答えて

1

ページがロードされた後にBeanにアクセスするには、少なくともViewScopedである必要があります。 RequestScoped Beanは、ページがロードされたときに破棄されます(リクエストは処理され、それ以上は必要ありません)。