我有一个简单的表格。
<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
, 进入结果页面,但值为空/空值。
@SessionScoped
,显示具有正确值的结果页面,但是当我单击浏览器的后退按钮并进入索引页面时,它们消失了。这只会在 IE 和 Chrome 下发生,而不会在 Firefox 下发生。