p:日历AJAX仅第二次更新

时间:2015-10-16 10:46:56

标签: ajax jsf primefaces

我的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";
        }
    }
}

我错过了什么吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

试试这个 在h:form中添加xhtml代码,其中您的日历是

<p:remoteCommand name="rc" update="criteriosDataGrid" >

和你的ajax

<p:ajax
    event="dateSelect" listener="#{foo.updateCriteria}" oncomplete="rc"/>
如果你需要p:ajax

的其余属性,我不会兴奋地知道