ice: selectOneMenu отправляет неправильное значение - PullRequest
2 голосов
/ 12 августа 2009

У меня есть несколько раскрывающихся меню с моим приложением JSF / ICEFaces, которые обновляют друг друга, поэтому в зависимости от выбора одного содержимое других обновляется.

Проблема в том, что меню отправляет неправильное значение. Кажется, он отправляет значение раньше, чем текущее! не уверен почему!

Есть идеи?

Спасибо

Tam

  <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 Ответ

1 голос
/ 12 августа 2009

Я обнаружил, что к тому времени, когда он вызывает метод, определенный в valueChangeListener, значение еще не привязано к соответствующей переменной, поэтому мне пришлось использовать переменную события, чтобы получить новое значение:

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

И это решило проблему

...