手动添加的面孔消息不会出现在手风琴面板的选项卡中
Manually added faces message doesn't appear in tab of accordion panel
我正在如下操作方法中添加面孔消息:
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" />
但是,它没有出现在所需的位置。这是怎么造成的,我该如何解决?
addMessage()
中的客户端 ID 必须有效才能使消息显示在所需位置。您已经考虑到 <h:form>
是一个 NamingContainer
,因此将其组件 ID 附加到子项的客户端 ID。但是,您忽略了 <p:accordionPanel>
也是这样一个(您应该通过查看生成的 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);
我正在如下操作方法中添加面孔消息:
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" />
但是,它没有出现在所需的位置。这是怎么造成的,我该如何解决?
addMessage()
中的客户端 ID 必须有效才能使消息显示在所需位置。您已经考虑到 <h:form>
是一个 NamingContainer
,因此将其组件 ID 附加到子项的客户端 ID。但是,您忽略了 <p:accordionPanel>
也是这样一个(您应该通过查看生成的 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);