我试图显示从bean加载的特定b:growl元素,基本上,我试图从BootsFaces展示(https://showcase.bootsfaces.net/forms/Growl.jsf;jsessionid=QdtXGdUxPK9sS714iLGuyksK93AMfZM-WfZm3py_.showcase01)中复制示例。 我使用了FacesMessages.info,但收到了两个b:growl消息。那么,如何定位特定的b:growl元素以显示我的消息? 在展示的示例中:messagesBean.specificInfo方法有什么作用?
修改: 谢谢斯蒂芬,但对我不起作用,我仍然收到两则b:grolw消息,忽略了一个宽度globalOnly =“ true”,而是显示了标准宽度。
这是我的代码: xhtml:
<ui:define name="content">
<div class="container" style="width: auto">
<h:form id="idForm">
<b:panel title="#{msg['administrarServicio']}" look="primary"
id="panel" collapsible="false">
<b:commandButton id="idBorrar" col-lg="3" col-md="3" colSm="10"
col-xs="10" offset-lg="2" offset-md="2" offset-sm="1"
offset-xs="1" value="Borrare o o o o" look="danger"
iconAwesome="trash" iconAlign="right"
action="#{serviceManagementBean.borrar}" />
</b:panel>
<b:growl id="growlCommonMsg" placementFrom="bottom"
show-detail="true" show-summary="true" allowDismiss="true"
global-only="true" delay="10000" escape="true" />
<b:growl for="idBorrar" id="growlMsg" globalOnly="true"
placementFrom="bottom" show-detail="true" show-summary="true"
allowDismiss="true" delay="10000" escape="true" global-only="false"
animation-enter="animated bounceInDown"
animation-exit="animated flipOutX" />
</h:form>
</div>
</ui:define>
Java:
public void borrar() {
System.out.println("BORRAR " + this.idTramite);
FacesMessages.info("idForm:idBorrar", "Se boró correctamente el servicio " + this.idTramite, "Nunca va a volver. ¡Nunca!");
}
答案 0 :(得分:2)
让我们从您缺少的源代码开始。 Here you go:
public void specificInfo() {
FacesMessages.info("growlForm:ref", "Info", "This is a specific message!");
}
public void error() {
FacesMessages.error("Error!", "Something has gone <strong>wrong</strong>.");
}
您会注意到唯一的区别是参数的数量。 specificInfo()
包含ID growlForm:ref
。您没有在代码段中包含它,但是growlForm
是周围表单的ID(至少在我们的展示柜中)。 id的第二部分ref
表示FacesMessage将由<h:message>
,<b:message>
,<p:message>
,<p:growl>
或{{1 }}在此表单中定义,并带有属性<b:growl>
。
查看展示柜中的两个for="ref"
,您会看到第一个咆哮没有<b:growl>
属性。而是设置for
。这将导致咆哮声忽略每个带有id的FacesMessage。它将忽略globalOnly="true"
生成的消息。
这就是为什么在我们的展示示例中有两个specificInfo()
,但是每个用户操作只会触发其中一个。
就是这样。问题恰恰相反:一个<b:growl>s
在屏幕上显示两个咆哮元素。您尚未提供任何Java源代码(还?),所以我只能猜测。最可能的解释是,您实际上两次生成了<b:growl>
。我建议在调试器中设置一个断点(或者,如果愿意的话,添加一个System.out.println())以排除该中断。
希望我给您足够的线索来解决您的问题。如果不是这样,请随时通过我们的bug tracker on GitHub与我们联系。请包括此StackOverflow问题的链接,以便必要时我可以更新此答案。