p:日历AJAX只更新第二次



我有一个问题与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的其他属性