我已经向我的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的咆哮吗?提前感谢!
发布于 2019-01-18 20:17:37
要解决这个问题,在我看来,您有两个选项可供选择;
仅允许p:growl中的全局消息
第一个选项是执行<p:growl globalOnly="true"/>。这将使PrimeFaces咆哮进入一种模式,即它只侦听没有特定客户端id的AJAX事件和消息。使用此方法,将for=id添加到组件/请求将导致它仅显示在目的地(例如,在p:message中,而不是在growl中)。
<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" />根据您的设计目标,您将优先选择其中一个作为主要解决方案。第二个解决方案将过滤和忽略没有任何目的地的faces消息,因为没有组件来接收它们。这可能是也可能是不可取的。
https://stackoverflow.com/questions/54219352
复制相似问题