【问题标题】:primefaces calendar change event with validator problem带有验证器问题的primefaces日历更改事件
【发布时间】:2019-06-09 17:25:36
【问题描述】:

我正在使用带有自定义验证器的<p:calendar />。我希望验证器由change 事件触发。

此外,我使用包含时间的日期模式 (dd.MM.yyyy HH:mm)。 如果使用时间,则与简单的日期使用相比,该组件的行为不同。在弹出日期选择器中选择日期时,弹出窗口本身不会自动关闭,因为您可能想随后选择时间。

在我的设置中,我需要更新消息和日历以获得正确的验证演示(消息中的信息和日历上的红色边框)。 但是更新关闭了日期选择器,所以我需要打开它两次来设置日期和时间。无论如何,它仍然会变得更糟,因为时间滑块实际上会在 每个 步骤上触发一个更改事件,所以我根本无法使用滑块(我需要打开选择器三十次才能将其设置为十二点半)。

我看到了相互矛盾的要求(更新组件与保持弹出),但没有解决方案。我很感激任何建议。

<p:message 
    id="id_message" 
    for="id_calendar" />
<p:calendar
    id="id_calendar"
    value="#{backingBean.date}"
    pattern="dd.MM.yyyy HH:mm">
    <f:validator 
        validatorId="myValidator" />
    <p:ajax 
        event="change" 
        update="id_message id_calendar"/>
</p:calendar>

【问题讨论】:

  • p:ajax 上使用delay="500" 会有一点改进

标签: validation jsf primefaces


【解决方案1】:

很好的建议,感谢@Kukeltje 的评论。

我更进一步并设置delay="10000",这样弹出窗口几乎不会在正常的用户交互中自动关闭。由于&lt;p:calendar /&gt; 组件的标准日期和时间输入行为,我的用户习惯于弹出不会自动关闭。

这对我来说已经成功了。

更新

也许 10 秒并不是一个好主意,因为当手动输入日期时,触发验证也需要 10 秒...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-27
    • 2013-11-04
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    相关资源
    最近更新 更多