【问题标题】:Manually added faces message doesn't appear in tab of accordion panel手动添加的面孔消息不会出现在手风琴面板的选项卡中
【发布时间】:2015-06-22 13:48:20
【问题描述】:

我在下面的操作方法中添加了一个面孔消息:

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" />

但是,它没有显示在所需的位置。这是如何引起的,我该如何解决?

【问题讨论】:

  • 它不起作用@smoggers
  • 直到现在我还没有使用过 css 文件,primefaces 已经有一些很酷的样式标签,......但任何帮助将不胜感激
  • 这与 CSS 无关。

标签: jsf message


【解决方案1】:

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

所以,先给它一个固定的ID。例如

<p:accordionPanel id="tabs">

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

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

因此,请在 addMessage() 中准确引用该 ID。

context.addMessage("tabs:connection:mail", message);

【讨论】:

  • 解决方案 --> context.addMessage("tabs:connection:mail", myMessage);谢谢你真的救了我!
猜你喜欢
  • 2016-01-10
  • 2015-09-06
  • 2016-01-06
  • 1970-01-01
  • 2019-05-21
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多