【发布时间】:2011-04-18 03:57:33
【问题描述】:
我目前遇到一个奇怪的现象,即在执行 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>
这是 bean 的摘录:
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
我想要的是,首先从 UI 中选择的新值设置预算,然后根据新 UI 开始搜索。但我不知道如何实现。
我正在使用 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>
我想知道我做错了什么?
谢谢!
【问题讨论】: