Id(personBean.idSelectedItem)始终返回null。虽然我可以选择并更改下拉列表的值,但Id仍然为空,不会相应更改。 请帮帮我,下面是我的代码:
<h:selectOneMenu value="#{personBean.idSelectedItem}" immediate="true" onchange="EnableDisable()">
<f:selectItems value="#{personBean.apptDuration}" />
</h:selectOneMenu>
我的豆是:
private String idSelectedItem = null;
private List<SelectItem> apptDuration = null;
public String getIdSelectedItem() {
System.out.println("getIdSelectedItem == " + idSelectedItem);
return idSelectedItem;}
public void setIdSelectedItem(String idSelectedItem) {
this.idSelectedItem = idSelectedItem;
System.out.println("setIdSelectedItem == " + idSelectedItem);
}
public List<SelectItem> getApptDuration() {
if (apptDuration == null) {
apptDuration = new ArrayList<SelectItem>();
apptDuration.add(new SelectItem("P1", "Day(s)"));
apptDuration.add(new SelectItem("P2", "5 min"));
apptDuration.add(new SelectItem("P3", "10 min"));
apptDuration.add(new SelectItem("P4", "15 min"));
}
return apptDuration;
}
public void setApptDuration(List<SelectItem> apptDuration) {
this.apptDuration = apptDuration;
}
我的代码出了什么问题?
答案 0 :(得分:0)
如果您不想重新加载,则必须使用Ajax,(a4j
如果您坚持使用RichFaces)。
使用a4j:commandButton
(或类似名称)显式发送ajax请求,或使用a4j:actionListener
h:selectOneMenu
来更改所选值时发送请求/模型更新。像(我正在从记忆中写作&gt;
<h:selectOneMenu id=...>
<h:selectItems .../>
<a4j:actionListener listener="#{myBean.myControllerMethod}"/>
</h:selectOneMenu>
如果没有RichFaces,f:ajax
也可以达到同样的目的。
答案 1 :(得分:0)
我使用a4j解决了我的问题:支持:现在它工作正常,不会每次重新加载我的页面:
<h:selectOneMenu id="appt" value="#{personBean.idSelectedItem}" >
<f:selectItems value="#{personBean.apptDuration}"/>
<a4j:support event="onchange" action="#{personBean.changeID}" oncomplete="DisableFields()" reRender="updatedId"/>
<h:inputHidden id="updatedId" value="#{personBean.updatedApptId}"/>
</h:selectOneMenu>