0

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;
}

我的代码有什么问题?

4

2 回答 2

0

如果您不想重新加载,则必须使用 Ajax,(a4j如果您坚持使用 RichFaces)。

使用a4j:commandButton(或类似的)显式发送 ajax 请求,或在更改所选值时a4j:actionListener在内部h:selectOneMenu发送请求/模型更新。类似的东西(我是凭记忆写的>

 <h:selectOneMenu id=...>
   <h:selectItems .../>
   <a4j:actionListener listener="#{myBean.myControllerMethod}"/>
 </h:selectOneMenu>

f:ajax在没有 RichFaces 的情况下也可以达到相同的目的。

于 2012-11-23T10:13:04.973 回答
0

我使用 a4j:support 解决了我的问题:现在它可以正常工作,而不是每次都重新加载我的页面:

 <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>
于 2012-11-24T15:32:53.260 回答