我正在使用<h:selectOneMenu>
向支持bean发送状态值。当我单击<h:commandLink>
时,正确地在bean中拾取了值(在log.debug
消息中)。但是,当页面重新加载时,选定的状态将丢失,顶部的那个(NY)将出现在UI中。不应该保留所选择的值吗?任何建议都非常赞赏。
我正在使用JSF 1.2。
JSP:
<h:selectOneMenu id="state" value="#{stateBean.stateName}">
<f:selectItem itemValue="NY" itemLabel="New York" />
<f:selectItem itemValue="CA" itemLabel="California" />
<f:selectItem itemValue="NE" itemLabel="Nebraska" />
<f:selectItem itemValue="AK" itemLabel="Alaska" />
</h:selectOneMenu>
<h:commandLink action="#{stateBean.sendStateAction}">
Managed Bean:
private String stateName;
log.debug("state name: " + stateName);
public String getStateName() {
return stateName;
}
public void setStateName(String name) {
this.stateName = name;
}
答案 0 :(得分:1)
可能您的托管bean配置为请求范围。如果将其更改为session
范围,则在用户会话仍处于活动状态时,该bean将可用。由于JSF 1.2没有view
范围,您可以尝试将数据保存在会话中并在bean的构造函数中恢复它,或者使用处理此问题的第三方库。更多信息:JSF 1.2: How to keep request scoped managed bean alive across postbacks on same view?我使用过RichFaces @KeepAlive
并为我的工作工作。