我有一个带有两个主要日历输入元素和一个数据表的表单。日历项用于过滤表中显示的结果,从值到值。因此,我使用p:ajax'dateSelect'事件,当使用鼠标在弹出窗口上进行操作时,该事件正常工作。但是当我使用键盘在输入字段中手动更改日期时,不会触发任何更改事件。当我使用第二个p:ajax事件进行模糊或更改时,我无法获得新值。
<p:calendar id="startDate"
value="#{filterStart}"
required="true"
showOn="button"
maxdate="#{filterEnd}"
>
<p:ajax event="dateSelect"
listener="#{listController.onFilterStartChanged}"
update="filterTbl, endDate" />
<p:ajax event="change"
listener="#{listController.onFilterStartBlured}"
update="filterTbl, endDate"
process="@this"
partialSubmit="true" immediate="true" />
</p:calendar>
当对pupup进行选择时,会调用onFilterStartChanged方法,可以读取新值:
public void onFilterStartChanged(final SelectEvent event) {...}
但将焦点移动到另一个组件时不会触发键盘更改
public void onFilterStartBlured(final AjaxBehaviorEvent event) {
Date newDate = (Date)((Calendar)event.getSource()).getValue();
...
}
我怎样才能获得新约会?
答案 0 :(得分:0)
我对Primefaces 5.3中的p:calendar有同样的需求,这对我来说很有用。我不使用事件参数
<p:calendar id="startDate"
value="#{filterStart}"
required="true"
showOn="button"
maxdate="#{filterEnd}"
>
<p:ajax event="dateSelect"
listener="#{listController.onFilterStartChanged()}"
update="filterTbl, endDate" />
<p:ajax event="change"
listener="#{listController.onFilterStartChanged()}"
update="filterTbl, endDate/></p:calendar>
方法中没有参数,值在filterStart
中public void onFilterStartChanged() {...}