首页 > 解决方案 > LocalDate(仅限)与 primefaces 日历

问题描述

我想在 Bean中显示一个primefaces calendar具有关联的元素。LocalDate

我以How to use java.time.ZonedDateTime / LocalDateTime in p:calendar为例。该示例工作正常,但我不需要时间部分,更重要的是我不希望显示日历的时间部分。

问题是当我更改pattern并删除时间部分时:

<p:calendar id="localDate"
        pattern="dd-MMM-yyyy"
        value="#{bean.periodFrom}">
    <f:converter converterId="localDateConverter" />
    <p:ajax update="display" />
</p:calendar>

转换器根本不再被调用/使用。这让我有点吃惊。

删除pattern也不起作用。

有没有其他方法可以在没有时间部分的情况下使用该示例?为什么当我“简化”模式时不再调用转换器?

JSF 2.2/ Java8/ Primefaces 6

标签: jsfprimefaceslocaldate

解决方案


没有触发 ajax 更新,因为您没有指定应该触发更新的任何事件。

如果不指定任何事件,将使用默认事件类型“change”。

  • p:calendar 触发“更改”事件,当您在 inputText 中输入日期并模糊时
  • p:calendar 在日历弹出窗口中选择日期时触发“dateSelect”事件

在您的情况下,您应该插入多个事件侦听器:

<p:ajax update="display" />
<p:ajax event="dateSelect" update="display" />

所以你的代码将导致:

<p:calendar id="localDate"
        pattern="dd-MMM-yyyy"
        value="#{bean.periodFrom}">
    <f:converter converterId="localDateConverter" />
    <p:ajax update="display" />
    <p:ajax event="dateSelect" update="display" />
</p:calendar>

(顺便说一句:不可能在同一个 p:ajax 组件中组合多个事件,您可以在此处阅读https://stackoverflow.com/a/38319944/1643015


推荐阅读