如何禁用p:Primefaces中的咆哮?

如何禁用p:Primefaces中的咆哮?,primefaces,Primefaces,我已经将组件添加到xhtml中,以捕获p:calendar组件上的dateSelect事件。它还使用我的自定义验证器,如果日期来自错误的范围,它会抛出异常。我想在p:message中显示错误消息,但它同时在p:message和growl中显示。如何禁用在咆哮中显示此消息 我尝试了不同的东西。我试图以某种方式禁用p:growl组件,但没有结果 以下是我使用ajax的日历组件: <p:calendar id="dbstartdate" tabindex=

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

我尝试了不同的东西。我试图以某种方式禁用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禁用咆哮吗?提前谢谢

要解决这个问题,在我看来,你有两个选择

只允许在
p:growl
第一个选项是执行
。这将使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" />

明确使用
第二种方法是让咆哮只听带有特定客户id的消息

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

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


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

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