Jsf 如何使用b:咆哮

Jsf 如何使用b:咆哮,jsf,bootsfaces,Jsf,Bootsfaces,我试图展示一个从bean加载的特定b:growl元素,基本上我试图复制BootsFaces showcase()中的示例。 我用了FacesMessages.info,但我收到两条b:咆哮信息。那么,我如何针对特定的b:growl元素来显示我的消息呢? 在showcase的示例中:messagesBean.specificInfo方法做什么 编辑: 谢谢Stephan,但他不为我工作,我仍然收到两条b:grolw消息,其中一条宽度globalOnly=“true”被忽略,而显示一条标准消息 这是

我试图展示一个从bean加载的特定b:growl元素,基本上我试图复制BootsFaces showcase()中的示例。 我用了FacesMessages.info,但我收到两条b:咆哮信息。那么,我如何针对特定的b:growl元素来显示我的消息呢? 在showcase的示例中:messagesBean.specificInfo方法做什么

编辑
谢谢Stephan,但他不为我工作,我仍然收到两条b:grolw消息,其中一条宽度globalOnly=“true”被忽略,而显示一条标准消息

这是我的密码: xhtml:


让我们从缺少的源代码开始

public void specificInfo(){
FacesMessages.info(“growlForm:ref”,“info”,“这是一条特定的消息!”);
}
公共无效错误(){
FacesMessages.error(“error!”,“有些东西出了问题”);
}
您会注意到唯一的区别是参数的数量
specificInfo()
包括id
growlForm:ref
。您没有将其包含在代码片段中,但
growlForm
是周围表单的id(至少在我们的展示中是这样)。id的第二部分,
ref
,表示将通过
显示FacesMessage,该消息在此表单中定义,并带有
for=“ref”
属性

查看showcase的两个
s,您将看到第一个咆哮没有
for
属性。相反,它设置
globalOnly=“true”
。这会导致咆哮忽略每个带有id的FacesMessage。它将忽略由
specificInfo()
生成的消息

这就是为什么在我们的showcase示例中有两个
s
,但每个用户操作只触发其中一个

就是这样。你的问题正好相反:一个
在屏幕上显示两个咆哮元素。您还没有提供任何Java源代码(到目前为止?),所以我只能猜测。最可能的解释是,您确实生成了两次
FacesMessage
。我建议您在调试器中设置一个断点(或者添加一个System.out.println(),如果您喜欢这种方法),以排除这种情况


我希望我已经给了你足够的线索来解决你的问题。如果没有,请随时联系我们。请包含此StackOverflow问题的链接,以便我可以在必要时更新此答案。

让我们从您缺少的源代码开始

public void specificInfo(){
FacesMessages.info(“growlForm:ref”,“info”,“这是一条特定的消息!”);
}
公共无效错误(){
FacesMessages.error(“error!”,“有些东西出了问题”);
}
您会注意到唯一的区别是参数的数量
specificInfo()
包括id
growlForm:ref
。您没有将其包含在代码片段中,但
growlForm
是周围表单的id(至少在我们的展示中是这样)。id的第二部分,
ref
,表示将通过
显示FacesMessage,该消息在此表单中定义,并带有
for=“ref”
属性

查看showcase的两个
s,您将看到第一个咆哮没有
for
属性。相反,它设置
globalOnly=“true”
。这会导致咆哮忽略每个带有id的FacesMessage。它将忽略由
specificInfo()
生成的消息

这就是为什么在我们的showcase示例中有两个
s
,但每个用户操作只触发其中一个

就是这样。你的问题正好相反:一个
在屏幕上显示两个咆哮元素。您还没有提供任何Java源代码(到目前为止?),所以我只能猜测。最可能的解释是,您确实生成了两次
FacesMessage
。我建议您在调试器中设置一个断点(或者添加一个System.out.println(),如果您喜欢这种方法),以排除这种情况


我希望我已经给了你足够的线索来解决你的问题。如果没有,请随时联系我们。请包含此StackOverflow问题的链接,以便我可以在必要时更新此答案。

您应该只在
h:form
b:form
元素中放置一个
b:form
元素,我只有一个,而bootsfaces示例有两个。我几乎可以肯定他们在谈论哪个bootsfaces示例?@MitchBroadhead。的确,我们忘了在示例中包含Java代码。我已将此添加到我的个人待办事项列表中。你应该只在
h:form
b:form
元素中放置一个
b:growl
。我只有一个,bootsfaces示例有两个。我几乎可以肯定他们在谈论哪个bootsfaces示例?@MitchBroadhead。的确,我们忘了在示例中包含Java代码。我已将此添加到我的个人待办事项列表中。谢谢Stephan,但它不为我工作,我仍然收到两条b:grolw消息,其中一条width globalOnly=“true”被忽略,并显示一条标准消息。我在主要帖子中添加了代码。目前,我在国外,但我会尽快复制并解决该错误。@Joaquin我已将您的源代码复制到我们的showcase中,试图复制您的问题。但一切都如愿:只有一声咆哮。我已签入源代码,因此您可以签出我们的showcase并将其与您的程序进行比较。现场演示在这里:顺便说一句,如果你继续与这个bug斗争,请让我们继续讨论我们的bug追踪器(或者给我发一封电子邮件)。我们的想法是,StackOverflow是一个让其他遇到相同问题的人快速找到解决方案的地方,所以让我们将这里的讨论限制到最低限度,并在另一个平台上继续讨论。谢谢Stephan,但不是为
<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>
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!");
}
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>.");
}