我有一个问题与PrimeFaces日历和ajax更新。
我有一个日历,当我更改UI上的日期时,我想刷新另一个组件。问题是,当我第一次更改日期时,其他组件保持不变,但是当我第二次更改日期时,其他组件更新为我期望的正确值。
这是我的表格:
<h:form>
<p:calendar
value="#{foo.dtValidade}">
<p:ajax update="criteriosDataGridTeste" event="dateSelect"
listener="#{foo.updateTeste}" />
</p:calendar>
<h:panelGroup id="criteriosDataGridTeste">
<td><h:selectOneMenu value="#{foo.idtpresult}">
<f:selectItem itemLabel="ok" itemValue="ok" />
<f:selectItem itemLabel="not ok" itemValue="not ok" />
</h:selectOneMenu></td>
</h:panelGroup>
</h:form>
我使用的是primefaces 3.0.1
通过调试,我发现侦听器在设置值dtValidade
之前被调用。
但我认为应该是另一种方式。为什么会发生这种情况?
我的bean的简化版本:
@ManagedBean(name = "foo")
@ViewScoped
public class Foooo {
private Date dtValidade;
private String idtpresult;
public Foooo() {
dtValidade = new Date();
idtpresult = "not ok";
}
public Date getDtValidade() {
return dtValidade;
}
public void setDtValidade(Date dt) {
this.dtValidade = dt;
}
public String getIdtpresult() {
return idtpresult;
}
public void setIdtpresult(String idtpresult) {
this.idtpresult = idtpresult;
}
public void updateTeste() {
Date now = new Date();
if (dtValidade.before(now)) {
idtpresult = "ok";
} else {
idtpresult = "not ok";
}
}
}
我错过什么了吗?
提前感谢!
试试这个在日历为
的h:表单中添加XHTML代码。<p:remoteCommand name="rc" update="criteriosDataGrid" >
和ajax
<p:ajax
event="dateSelect" listener="#{foo.updateCriteria}" oncomplete="rc"/>
我不知道你是否需要p:ajax的其他属性