我已将组件添加到我的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禁用咆哮吗?预先感谢!
答案 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" />
根据您的设计目标,您将首选其中一种作为主要解决方案。第二种解决方案将筛选并忽略没有任何目的地的人脸消息,因为没有组件可以接收它们。这可能是理想的,也可能不是理想的。