Primefaces 5.1日历弹出窗口不执行valueChange事件

pro*_*mer 2 jsf primefaces jsf-2

我试着以这种方式使用带有弹出窗口的primefaces日历:

<p:calendar pattern="yyyy-MMM-dd" value="#{controller.beginDate}" mask="true" navigator="true">
    <f:ajax event="valueChange" listener="#{controller.onChange}" />
</p:calendar>
Run Code Online (Sandbox Code Playgroud)

这是相对控制器:

@ManagedBean
public class Controller {
    private Date beginDate;

    public Date getBeginDate() {
        return beginDate;
    }

    public void setBeginDate(Date beginDate) {
        this.beginDate = beginDate;
    }

    public void onChange() {
        // do somethings
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:如果我从输入字段更改值,则事件将执行,但如果我从弹出窗口更改它,则事件将不会执行.

谁能帮我?

Bal*_*usC 5

valueChange事件仅由HTML DOM change事件触发.当通过JavaScript方式操纵输入值时,确实不会触发此操作.

你需要这个dateSelect活动.而且,在PrimeFaces组件中,您最好使用<p:ajax>而不是<f:ajax>.

<p:calendar ...>
    <p:ajax event="valueChange" listener="#{controller.onChange()}" />
    <p:ajax event="dateSelect" listener="#{controller.onChange()}" />
</p:calendar>
Run Code Online (Sandbox Code Playgroud)

也可以看看: