2011-07-07 103 views
3

我有一個隱藏的輸入字段,其值是從請求範圍的特性如下: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在頁面加載時被銷燬(請求被處理並且不再需要它)。