【发布时间】:2012-05-18 05:04:08
【问题描述】:
我在使用后退按钮时遇到问题,没有将数据保存在请求范围 bean 上的 JSF 中的动态下拉列表中。
我有一个带有 2 个下拉列表的表单,其中 dropdown2 是基于在 dropdown1 中选择的动态的。下面是这些下拉菜单的代码。
<h:selectOneMenu id="group" label="group" value="#{queryBacking.groupInternalId}">
<f:ajax event="valueChange" render="membership" />
<f:selectItems value="#{supportBean.groupInstitutions}" var="group" itemValue="#{group.institutionInternalId}" itemLabel="#{group.institutionName}" />
</h:selectOneMenu>
<h:selectOneMenu id="membership" label="Membership" value="#{queryBacking.institutionInternalId}">
<f:selectItem itemLabel="Select One" itemValue="0" />
<f:selectItems value="#{queryBacking.groupMembershipInstitutions}" var="institution" itemValue="#{institution.institutionInternalId}" itemLabel="#{institution.institutionShortName}" />
</h:selectOneMenu>
我的代码运行良好,但如果您提交表单然后单击后退按钮,则 dropdown2 不包含任何值。如何解决这个问题?
【问题讨论】:
-
将范围更改为会话或使用会话中的值初始化页面加载上的值
-
我已经尝试将范围更改为会话并且可行,但我不喜欢会话范围的原因是因为如果用户打开了 2 个选项卡,如果他们打开会话范围会弄乱数据在选项卡 1 中运行新搜索,然后刷新选项卡 2。
-
我知道从请求到会话范围的问题,这就是为什么我还说您可以使用会话中的值初始化页面上的值。另外,您使用的 JSF 版本是什么?
-
我不确定你的意思是用会话中的值初始化页面上的值。你能详细说明吗?我正在使用 JSF 2.0
标签: jsf back-button