Primefaces 5.1 日历弹出窗口不执行 valueChange 事件
Primefaces 5.1 calendar popup doesn't execute the valueChange event
我尝试以这种方式使用带弹出窗口的 primefaces 日历:
<p:calendar pattern="yyyy-MMM-dd" value="#{controller.beginDate}" mask="true" navigator="true">
<f:ajax event="valueChange" listener="#{controller.onChange}" />
</p:calendar>
这里是相对控制器:
@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
}
}
问题:如果我从输入字段更改值,事件将执行,但如果我从弹出窗口更改它,事件将不会执行。
谁能帮帮我?
valueChange
事件仅由HTMLDOMchange
事件触发。当输入值被 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>
另请参阅:
尝试使用 PrimeFaces dateSelect 事件。
来自 PrimeFaces 文档:
Calendar 提供了一个 dateSelect ajax 行为事件,以便在选择日期时立即执行 ajax 选择。如果您将方法定义为侦听器,它将通过传递 org.primefaces.event.SelectEvent 实例来调用。
<p:calendar value="#{calendarBean.date}">
<p:ajax event="dateSelect" listener="#{bean.handleDateSelect}" />
</p:calendar>
我尝试以这种方式使用带弹出窗口的 primefaces 日历:
<p:calendar pattern="yyyy-MMM-dd" value="#{controller.beginDate}" mask="true" navigator="true">
<f:ajax event="valueChange" listener="#{controller.onChange}" />
</p:calendar>
这里是相对控制器:
@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
}
}
问题:如果我从输入字段更改值,事件将执行,但如果我从弹出窗口更改它,事件将不会执行。
谁能帮帮我?
valueChange
事件仅由HTMLDOMchange
事件触发。当输入值被 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>
另请参阅:
尝试使用 PrimeFaces dateSelect 事件。
来自 PrimeFaces 文档:
Calendar 提供了一个 dateSelect ajax 行为事件,以便在选择日期时立即执行 ajax 选择。如果您将方法定义为侦听器,它将通过传递 org.primefaces.event.SelectEvent 实例来调用。
<p:calendar value="#{calendarBean.date}">
<p:ajax event="dateSelect" listener="#{bean.handleDateSelect}" />
</p:calendar>