我有以下带有 showTime="true" 的 datePicker,它允许用户输入日期和时间。
<p:datePicker id="deliveryTime" value="#{orderController.order.deliveryTime}" showTime="true" pattern="dd.MM.yyyy"/>
deliveryTime 是 java.util.Date (也尝试使用 String,相同的结果)
在浏览器的“网络”选项卡中我可以看到:
formContent:j_id_m_4:deliveryTime_input: 23/05/19 19:45
但是,当我提交表单时,日期设置正确,但 bean 接收的时间仅为 00:00:00
看起来这是一个已知问题:DatePicker:未在日期对象上设置时间#4625
由于计划重构日期相关组件以使用 Java 8 LocalDate/Time API,此问题的修复似乎也被延迟:移至 Java8 LocalDate/Time #4646
您可以强制组件执行ajax请求来更新您的bean属性:
<p:datePicker id="deliveryTime"
value="#{orderController.order.deliveryTime}" showTime="true"
pattern="dd.MM.yyyy">
<p:ajax event="dateSelect"
listener="#{orderController.onDeliveryTime}"></p:ajax>
</p:datePicker>
public void onDeliveryTime(org.primefaces.event.SelectEvent<Date> event) {
Date date = event.getObject();
this.order.deliveryTime = date;
}
使用版本11.0.0进行测试