【问题标题】:How to disable p:growl in Primefaces?如何在 Primefaces 中禁用 p:growl?
【发布时间】:2019-01-16 14:34:56
【问题描述】:

我已将组件添加到我的 xhtml,以捕获 p:calendar 组件上的 dateSelect 事件。它还使用我的自定义验证器,如果日期来自错误的范围,它将引发异常。我想在 p:message 中显示错误消息,但它同时显示在 p:message 和咆哮中。如何禁用在咆哮中显示此消息?

我尝试了不同的东西。我试图以某种方式禁用 p:growl 组件,但没有结果。

这是我的带有 ajax 的日历组件:

                    <p:calendar id="dbstartdate" tabindex="3"
                                styleClass="calrequested" style="width:99px;"
                                showButtonPanel="true">

                        <p:ajax event="dateSelect"
                                listener="#{MyBean.saveDateRange}"
                                update=":dashboard_frameset"/>
                    </p:calendar>

我试过了,例如像这样:

<p:growl for="dbstartdate" rendered="false"/>

p:ajax 也一样(我在那里添加了 id)。

不幸的是,它没有成功。你们中有人知道如何禁用 p:ajax 的咆哮吗?提前致谢!

【问题讨论】:

  • 您有一个for="dbstartdate",它明确引用了p:calendar。为什么不直接删除它?但是您的“自定义验证器”是什么?真正的验证器不应该抛出异常。但也许“全球唯一”会有所帮助?
  • 你最好只在咆哮声上使用全局,或者使用咆哮声和消息组件的严重性属性。

标签: primefaces


【解决方案1】:

要解决这个问题,据我所知,您有两个选项可供选择;

只允许p:growl中的全局消息

第一个选项是&lt;p:growl globalOnly="true"/&gt;。这将使 PrimeFaces 咆哮进入仅侦听没有特定客户端 ID 的 AJAX 事件和消息的模式。使用此方法,将for=id 添加到组件/请求将导致它仅显示在目标中(例如在p:message 中而不是在咆哮中。

<p:calendar id="calendar">
    <p:ajax global="false" event="dateSelect" />
</p:calendar>

<p:message for="calendar" />
<p:growl globalOnly="true" />

明确使用&lt;p:growl for="id"/&gt;

第二条路线是让咆哮只收听具有特定客户端ID的消息。这看起来像这样;

<p:calendar id="calendar">
    <p:ajax event="dateSelect" />
</p:calendar>

<p:message for="calendar" />
<p:growl for="someotherId" />

根据您的设计目标,您将首选其中一种作为主要解决方案。第二种解决方案将过滤和忽略没有任何目的地的面孔消息,因为没有组件可以接收它们。这可能是可取的,也可能是不可取的。

【讨论】:

    猜你喜欢
    • 2013-03-15
    • 2013-03-13
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多