ice:selectOneMenu发送错误的值

时间:2009-08-11 20:38:14

标签: java jsf icefaces

我有多个下拉菜单,我的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>

1 个答案:

答案 0 :(得分:1)

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

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

这解决了问题