2

我的 JSF/ICEFaces 应用程序有多个下拉菜单,它们相互更新,因此根据选择的其他内容更新其他内容。

问题是菜单发送了错误的值。似乎它发送的是之前的值而不是当前的值!不知道为什么!

有任何想法吗?

谢谢,

  <td>
    <ice:selectOneMenu id="selectCurApplNm"
      value="#{statsDisplayAndFilter.applIDFilterPhrase}"
      disabled="#{statsDisplayAndFilter.disableCurrentApplIdNamesMenu}"
      valueChangeListener="#{statsDisplayAndFilter.fetchEventNames}"
      partialSubmit="true" immediate="true">
      <f:selectItem itemValue="" itemLabel="" />
      <f:selectItem itemValue="all" itemLabel="all" />
      <f:selectItems id="selectCurApplNmItems"
        value="#{statsDisplayAndFilter.currentApplIdItems}" />
    </ice:selectOneMenu>
  </td>
</tr>
<tr>
  <td>
    <ice:outputLabel for="SlctCompTyp" value="Event Name: " />
  </td>
  <td>
    <ice:selectOneMenu id="SlctCompTyp"
      value="#{statsDisplayAndFilter.eventNameFilterPhrase}"
      disabled="#{statsDisplayAndFilter.disableEventNamesMenu}"
      valueChangeListener="#{statsDisplayAndFilter.fetchMethodNames}"
      partialSubmit="true" immediate="true">
      <f:selectItem itemValue="" itemLabel="" />
      <f:selectItem itemValue="all" itemLabel="all" />
      <f:selectItems id="SlctcompTypeItms"
        value="#{statsDisplayAndFilter.eventNameItems}" />
    </ice:selectOneMenu>
  </td>
</tr>
4

1 回答 1

1

我发现当它调用 valueChangeListener 中定义的方法时,该值尚未绑定到正确的变量,因此我不得不使用事件变量来获取新值:

public void fetchEventNames(ValueChangeEvent e) throws SQLException{
   String filteringOptions = ""; 
   String newSelectedValue = e.getNewValue().toString();
       .....

这解决了问题

于 2009-08-11T21:19:37.590 回答