gpt4 book ai didi

jsf - 如何防止 PrimeFaces 民意调查清除 FacesMessages?

转载 作者:行者123 更新时间:2023-12-04 09:25:37 24 4
gpt4 key购买 nike

我正在使用 PrimeFaces 轮询组件来刷新一些内容。

<h:form id="formBsvtt">
<p:messages autoUpdate="true" showDetail="false" />
<p:outputPanel id="panelOut" layout="block">
...
... content to refresh
...
</p:outputPanel>
<p:panelGrid id="panelIn" layout="block">
...
... various input components with validation
...
</p:panelGrid>
<p:poll widgetVar="poll1" autoStart="true" global="false" interval="15"
partialSubmit="true" process="@this" update="panelOut"
listener="#{myBean.myListener}">
</p:poll>
</h:form>

如您所见,我使用带有 autoUpdate=true 的消息。我的问题是:如果出现验证错误,FacesMessages 将显示,但不迟于 15 秒消失。

是否可以在不设置消息 autoUpdate=false 的情况下阻止轮询清除 FacesMessages?

我的 Web 应用程序比上面指定的代码片段要大得多,我的目的不是在每种可能的情况下手动更新消息!

最佳答案

PrimeFaces 2.x/3.x
这在本地是不可能的,所以需要一个技巧。在 rendered <p:messages> 的属性, 检查是否 <p:poll>已被触发,如果是,则返回 false .这样 JSF 认为在渲染期间组件树中没有可自动更新的消息组件,因此会忽略它。
如果<p:poll>被触发,则其客户端 ID 显示为 javax.faces.source请求参数。所以,这应该做:

<p:messages ... rendered="#{param['javax.faces.source'] ne poll.clientId}" />
...
<p:poll binding="#{poll}" ... />
(注意:不需要额外的 bean 属性)
PrimeFaces 4.x+
所有 PrimeFaces 命令组件都有一个新的 ignoreAutoUpdate您可以设置为 false 的属性忽略所有 autoUpdate="true" ajax 更新中的组件。
<p:poll ... ignoreAutoUpdate="true" />

关于jsf - 如何防止 PrimeFaces 民意调查清除 FacesMessages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17298913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com