在手风琴面板的选项卡中不会出现手动添加的脸部消息

时间:2015-06-22 13:48:20

标签: jsf message

我在动作方法中添加了一条面部消息,如下所示:

FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Mail invalide", "Vérifier le mail");
FacesContext.getCurrentInstance().addMessage("connection:mail", message);

我希望它出现在树的下面位置:

<h:body>
    <p:layout fullPage="true">
        <p:layoutUnit position="center" >
            <p:accordionPanel multiple="true" activeIndex="0">
                <p:tab title="Se connecter" >
                    <h:form id="connection">
                        ...
                        <p:inputText id="mail" ... />
                        <p:message for="mail"></p:message>
                        ...
                        <p:commandButton value="OK" action="#{login.validateMailPaswword()}" ajax="false" />

但是,它没有出现在所需的位置。这是怎么造成的,我该如何解决?

1 个答案:

答案 0 :(得分:4)

addMessage()中的客户端ID必须有效才能让消息显示在所需位置。您已考虑<h:form>NamingContainer,因此将其组件ID添加到子项的客户端ID。但是,您忽略了<p:accordionPanel>也是这样的(您应该通过查看生成的HTML输出,同时找出消息的客户端ID)来发现它。

所以,首先给它一个固定的ID。 E.g。

<p:accordionPanel id="tabs">

然后在生成的HTML输出中查找您在消息组件中引用的输入组件的生成的HTML表示的客户端ID。它看起来像这样:

<input type="text" id="tabs:connection:mail" ... />

因此,请在addMessage()

中准确引用该ID
context.addMessage("tabs:connection:mail", message);