jsf - p:datePicker dateSelect 空日期事件
问题描述
我有两个p:datePicker
,它们工作正常:
<p:outputLabel for="filterStartDate" value="Start Date:" />
<p:datePicker id="filterStartDate" value="#{historyController.filterStartDate}" timeOnly="true" pattern="HH:mm" converter="#{localTimeConverter}">
<p:ajax event="dateSelect" listener="#{historyController.filterStartDateSelect}"/>
</p:datePicker>
<p:outputLabel for="filterEndDate" value="End Date:" />
<p:datePicker id="filterEndDate" value="#{historyController.filterEndDate}" timeOnly="true" pattern="HH:mm" converter="#{localTimeConverter}">
<p:ajax event="dateSelect" listener="#{historyController.filterEndDateSelect}"/>
</p:datePicker>
在我的后端,我捕获 ajax 事件的方法是:
private LocalTime filterStartDate;
private LocalTime filterEndDate;
public void filterStartDateSelect(SelectEvent event) {
filterStartDate = ((LocalTime) event.getObject());
}
public void filterEndDateSelect(SelectEvent event) {
filterEndDate = ((LocalTime) event.getObject());
}
这很好用,问题是当我想初始化对象filterStartDate
和. 当值为空时,它永远不会调用ajax 事件。filterEndDate
null
dateSelect
解决方案
如果您查看文档的“Ajax 行为事件”部分p:datePicker
,您会发现唯一明确记录的事件是dateSelect
. 但是有一个说明:
在弹出模式下,
DatePicker
还支持模糊、keyup 等常规 ajax 行为事件。
因此,您可以添加一个 Ajax 侦听器并处理所有更改并使用它来处理null
值。或者只使用更改事件来处理所有更改,这样可以节省对服务器进行的额外 Ajax 调用。
推荐阅读
- javascript - Paypal Smart Payment Buttons — 如何在服务器端创建订单并将订单 ID 传递给 Paypal Buttons 设置?
- node.js - Flask socket.IO 服务器上的 Node.js Socket.io 客户端
- c# - 自定义 Is64BitOperatingSystem 预处理器指令
- python - Python Uno 游戏
- json - Swift Json可解码数据结构,单个数组中的不同值
- python-3.x - 以字节为单位获取字符“N”和“\r”。诡异的?不是吗?
- c# - Angular 在更改文化后使用逗号而不是点作为小数分隔符
- sql - MS SQL:是否可以在没有 T/PL sql 的情况下在 SQL 中解决此任务?
- gradle - 无法使用 Gradle 部署到 Bintray
- python - 如何将字典中的值放入列表形式,然后将它们平方成列表