В настоящее время я наблюдаю странное явление, когда установка значения для модели происходит перед выполнением valueChangeListener.
По сути, я бы хотел, чтобы это произошло:
- Я меняю меню выбора
- Новое значение передается с использованием Ajax для обновления myBean (с использованием f: ajax)
- Выполнить запрос на основе вновь отправленного значения (используя valueChangeListener)
- Визуализация таблицы на основе результата последнего запроса
Но то, что происходит, когда я бегу, происходит в следующем порядке: 1 - 3 - 2 - 4 (а не 1 - 2 - 3 - 4, как я себе представлял)
Вот часть пользовательского интерфейса:
<h:selectOneMenu label="budget" id="budget"
converter="genericConverter"
value="#{myBean.budget}"
valueChangeListener="#{myBean.actionSearch}">
<f:ajax render="myGrid" />
<f:selectItem itemLabel="Choose one .." noSelectionOption="true" />
<f:selectItems ... />
</h:selectOneMenu>
А вот выдержка из боба:
public void actionSearch() {
System.out.println("searching with this.budget == " + this.budget);
...
}
public void setBudget(String budget) {
System.out.println("setting budget : " + budget);
this.budget = budget;
}
И это вывод:
searching with this.budget == xxxx
setting budget : yyyy
Что я хотел бы, так это установить бюджет сначала из нового значения, выбранного в пользовательском интерфейсе, а затем начать поиск на основе нового пользовательского интерфейса. Но я не знаю, как этого добиться.
И я использую Tomcat 7 вместе с этими:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.sun.faces</groupId>
<artifactId>jsf-impl</artifactId>
<version>2.0.4-b09</version>
<scope>compile</scope>
</dependency>
Интересно, что я сделал не так?
Спасибо!