如何在Primefaces中禁用p:growl?

时间:2019-01-16 14:34:57

标签: primefaces

我已将组件添加到我的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禁用咆哮吗?预先感谢!

1 个答案:

答案 0 :(得分:0)

要解决此问题,据我所知,您有两个选择;

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

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

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

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

明确使用<p:growl for="id"/>

第二种方法是使咆哮只监听带有特定客户端ID的消息。看起来像这样;

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

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

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