templates - 模板中的多个 primefaces 消息

标签 templates jsf primefaces messages

问题:

我的 Web 应用程序是由多个片段和模板构建的。 Header-Template 有一个“p:messages”来显示应用程序范围的错误。除此之外,我还有一个内容模板来显示内容/正文。

现在我遇到了以下问题:我想在内容模板的组件下显示内容验证错误(例如选择了错误的日期等)。如果我发送一个面部消息,它不仅会显示在内容的消息部分,还会显示在标题中:

enter image description here

目前只有两个组件需要验证:

<p:calendar id="calendar1" value="#{doesn't matter}">
     <f:validateRequired></f:validateRequired>
</p:calendar>

<p:calendar id="calendar2" value="#{doesn't matter}">
     <p:ajax event="dateSelect" listener="#{onDateSelect}"
      partialSubmit="true" update="ContentMessages"/>
</p:calendar>

消息标签:

    <p:messages id="GlobalMessages" showSummary="true" showDetail="false" closable="true" redisplay="false"/>

    <p:messages id="ContentMessages" showDetail="true" autoUpdate="true"/>

我如何发送 FacesMessage:

 FacesContext.getCurrentInstance().addMessage(componentClientId,
            new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error:","Error Text"));

到目前为止我尝试了什么:

  • 使用两个带有 for="calendar1"和 for="calendar2"的 p:message 标签。两个模板中仍然存在错误。

  • 使用带有 for-tag 的“ContentMessages”:for="calendar1 calendar2"。在标题中显示错误,而不是在内容中显示错误,只有当我为 for-tag 使用单个组件 ID 时,它才会再次在两个模板中显示消息。

我不能做什么:

  • 使用 globalOnly="true"。
  • 仅为信息设置 header 的严重性,为错误和严重错误设置内容。

最佳答案

因为我看不到您模板的代码,所以我无法判断它们是否有问题,但 primefaces 中的可定位消息应该没有问题。

尝试通过删除不必要的代码来缩小问题范围。

此示例 100% 有效,每条消息只会显示一次。

<h:form id="form">
<p:messages for="somekey" />
<p:messages for="anotherkey" />

 <p:commandButton value="Message 1" id="m1" update="form" actionListener="#{playgroundController.addMessage1()}" styleClass="ui-priority-primary" />
 <p:commandButton value="Message 2" id="m2" update="form" actionListener="#{playgroundController.addMessage2()}" styleClass="ui-priority-primary" />

</h:form>

bean 类:

public void addMessage1() {
    FacesContext.getCurrentInstance().addMessage("somekey", new FacesMessage(FacesMessage.SEVERITY_INFO, "Sample info message", "Message 1"));
}


public void addMessage2() {
    FacesContext.getCurrentInstance().addMessage("anotherkey", new FacesMessage(FacesMessage.SEVERITY_INFO, "Sample info message 2", "Message 2"));
}

关于templates - 模板中的多个 primefaces 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30910311/

相关文章:

c++ - 如何限制模板仿函数返回和参数类型

c++ - 非模板代码有效时,模板代码无效!

java - PrimeFaces 仪表板

java - 如何终止 JSF 中 Java 方法或 Java 类的运行 (PrimeFaces 3.0)

file-upload - 如何使用 <p :fileUpload> 限制允许上传的文件数量

c++ - 为什么 GCC 不能将此使用声明解析为正确的类型

jsf - 在 NetBeans 中,Mojarra 2.2 outputStyleSheet 没有媒体属性

jsf - 如何使用 Primefaces 下载多个文件

java - PrimeFaces Mobile 5.2 和基于表单的 JAAS 登录无法协同工作

c++ - 如何将模板类对象作为 C++ 中非模板类的成员?