私はシンプルなフォームを持っています。
<h:form>
<h:selectOneMenu value="#{user.siteID}" >
<f:selectItems id="vals" value="#{user.basinSiteIDs}" />
<f:ajax event="valueChange" listener="#{user.updateWithAjax(e)}"
render="all" />
</h:selectOneMenu>
<h:selectManyCheckbox id="all" value="#{user.siteIDs}" layout="pageDirection">
<f:selectItems id="sites" value="#{user.csrpSites}" />
</h:selectManyCheckbox>
<h:commandButton value="submit" action="result"/>
</h:form>
ページは、最初に、関連する値を含むドロップダウンとチェック ボックスをロードします。ドロップダウンから選択すると、チェック ボックスの値が ajax で動的に変更されます。送信ボタンをクリックして、ユーザーが選択した値を結果ページに表示する必要があります。
問題は次のとおりです。 を使用@RequestScoped
すると、送信ボタンをクリックすると が表示されますj_idt7:all: Validation Error: Value is not valid
。
@ViewScoped
、結果ページが表示されますが、値は空/null です。
@SessionScoped
、正しい値の結果ページを表示しますが、ブラウザーの戻るボタンをクリックしてインデックス ページに移動すると、値が表示されなくなります。これは IE と Chrome でのみ発生し、Firefox では発生しません。