【发布时间】:2021-07-15 10:17:38
【问题描述】:
我创建了一个自定义验证器,它与通常的 p:message 一起使用。但我会将此验证器用于多个相同类型(整数)的字段,并以咆哮或消息的形式显示消息。但我注意到这条消息几乎立即隐藏在咆哮和消息中。
这是我的咆哮(在模板中):
<p:growl id="msgs" autoUpdate="true" showDetail="true" />
这是消息(在特定页面中):
<p:messages id="messages" autoUpdate="true" closable="true" showDetail="true" />
怎么了?通常,使用addMessage,模板咆哮有效。我还尝试在验证器的validate() 方法中执行addMessage,但现在两条消息消失了!
我也尝试在咆哮中添加sticky="true",但没有。
我很想将所有 p:message 添加到页面顶部并使用 JS 删除其他人...
我正在使用 Primefaces 3.4.1 和 Mojarra 2.1.7
【问题讨论】:
-
试试
keepAlive="true" -
@JasperdeVries:在咆哮声还是在验证器中?
-
@JasperdeVries: 如果它在咆哮,
keepAlive="true"不起作用:( -
这就是为什么我不在咆哮中使用自动更新。此外,我更喜欢在咆哮中验证失败时显示一般消息以及每个失败字段的详细信息。请参阅stackoverflow.com/questions/42247737/… 您还可以通过 Ajax 更新来自该侦听器的咆哮。
-
@BalusC:从“全局”咆哮中删除 autoUpdate="true" 是可行的,但是如果我将相同的验证器放在多个输入上,则错误消息会显示更多次,即使我把
redisplay="false"
标签: jsf primefaces