我正在使用带有自定义验证程序的<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>
答案 0 :(得分:0)
很好的建议,谢谢@Kukeltje。
我走得更远,设置delay="10000"
,以使弹出窗口几乎不会在正常的用户交互中自动关闭。我的用户习惯于由于<p:calendar />
组件的标准日期和时间输入行为,弹出窗口不会自动关闭。
这对我来说是成功的秘诀。
更新
也许10秒并不是一个好主意,因为手动输入日期时也需要10秒才能触发验证...