Primefaces从对话框外部文件中咆哮消息

时间:2015-06-01 20:20:18

标签: jsf primefaces dialog growl

我有带TabView的jsf页面...共3个标签。选项卡使用某些表单调用对话框以创建元素。对话框放在外部的.xhtml页面中。 第一个选项卡位于“主”页面(下面的代码),并且从验证bean调用的growl消息在页面上显示良好。第二个选项卡调用growl消息,但是从带有对话框的外部文件放置在窗体上的按钮...没有出现错误,但是没有显示咆哮消息。

我的“主要”观点:     

    <ui:composition>
        <p:growl id="growl" showDetail="true" life="4000" />
        <h:form id="systemSettingsForm">

            <p:tabView id="ticketSettingsTab" rendered="true" widgetVar="tabViewVar">

                <p:tab id="tab0">
                    ...
                </p:tab>

                <p:tab id="tab1">
                    <ui:include src="/WEB-INF/tags/dialogs.xhtml" />
                    <p:commandButton value="Add" oncomplete="PF('addDialog').show()" update=":systemSettingsForm:ticketSettingsTab:addingDlg" />
                    ...
                </p:tab>

            </p:tabView>
        </h:form>
    </ui:composition>
</h:body>

对话框视图看起来像(我认为没什么特别的......):

   <p:dialog id="addPositionDlg" header="Add position" widgetVar="addDialog">
        <h:panelGrid id="addingDlg" columns="3" > 
            <p:outputLabel value="Position name :"/>
            <p:selectOneMenu id="selectType" value="#{positionsTableView.positionType}" > 
                <f:selectItem itemLabel="Select one option" itemValue="" />
                <f:selectItems value="#{positionsTableView.types}" />
            </p:selectOneMenu>
            <p:outputLabel style="width:1px;"/>

            <p:outputLabel value="Prefix :" />
            <p:inputText id="addPrefix" value="#{positionsTableView.newPosition.prefix}" />
            <pe:tooltip for="addPrefix" showEvent="focus" hideEvent="blur">...</pe:tooltip>
            //few simillar inputs, not even validated
            <center>
                <p:commandButton value="Add" actionListener="#{positionsTableView.addByPrefix}" ajax="true"
                    update=":systemSettingsForm:ticketSettingsTab:mappingTable" oncomplete="PF('addDialog').hide();"/>          
            </center>
        </h:panelGrid>
    </p:dialog>

在对话框窗口(#{positionsTableView.addByPrefix})中由命令按钮调用的actionListener中添加了Growl消息,并且此bean与前一个bean(此工作)位于同一个包中,并以相同的方式添加消息,即:

    public static void addMessage(String title, String message) {
         FacesContext context = FacesContext.getCurrentInstance();
         context.addMessage(null, new FacesMessage(title,  message));
    }

两个调用消息的bean都是会话范围的。

我在这里搜索并试图谷歌解决方案但没有一个成功... 请帮忙。

我的解决方案:

在命令按钮上调用要在growl元素上显示的消息我已经更新了整个tabView菜单并且它工作。可能它不是最好的解决方案,但更新growl id会导致错误(从对话文件中看不到)。

0 个答案:

没有答案