如何在更新全局 PrimeFaces 咆哮时防止 p:messages 被更新
how to prevent p:messages from being updated when update global PrimeFaces growl
我正在使用 PF 5.3 和 JSF 2.2
我有一个全局 p:growl 将在 backBean 中更新,问题是每当我更新全局 p:growl 时,其他 p:messages 也会更新数据。我想要一个方法,在后台bean的action方法中只更新global growl,其他的p:messages不应该更新
xhtml:
<h:body>
<p:growl id="growlGeneralMessages" showDetail="true" sticky="true" globalOnly="true" />
<h:form id="register_new_student" enctype="multipart/form-data" >
<p:messages autoUpdate="true" />
<p:commandButton id="new_student_action" value="Add" update="register_new_student_panel" validateClient="true" action="#{teacherPresentation.newStudentAction()}" />
</h:form>
</h:body>
背豆:
public String newStudentAction() {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Wrong username or password!", "");
context.addMessage(null, message);
context.getExternalContext().getFlash().setKeepMessages(true);
return "teacher.xhtml?faces-redirect=true";
}
我尝试了两件事,但都没有用:
1- 从 p:messages 中删除属性自动更新(失败)
2-在addMessage方法中指定客户端id
context.addMessage(空,消息); --> context.addMessage("growlGeneralMessages", 消息); (也失败了)
我想你有两种选择来控制它
关键选项
p:growl
和 p:messages
都有一个 for
属性,可以让您将该组件绑定到一个键。您可以控制要在每个组件上显示的消息,使用该键作为 FacesContext.addMessage()
的 clientId
参数
这就是我的意思:
<p:growl for="growlKey"/>
在 BackBean 中:
facesCtx.addMessage("grwolKey", facesMsg);
严重性选项
同样,这两个组件都有一个 severity
参数,可让您控制显示哪些消息。例如,您可以使用 info
表示咆哮,使用 error
表示消息,或其他任何内容.
创建 FacesMessage
时,您可以使用 FacesMessage.Severity
指定严重性。
FacesMessage facesMsg = new FacesMessage(
FacesMessage.SEVERITY_ERROR, "Your title", "Your Message")
希望对您有所帮助!
我正在使用 PF 5.3 和 JSF 2.2
我有一个全局 p:growl 将在 backBean 中更新,问题是每当我更新全局 p:growl 时,其他 p:messages 也会更新数据。我想要一个方法,在后台bean的action方法中只更新global growl,其他的p:messages不应该更新
xhtml:
<h:body>
<p:growl id="growlGeneralMessages" showDetail="true" sticky="true" globalOnly="true" />
<h:form id="register_new_student" enctype="multipart/form-data" >
<p:messages autoUpdate="true" />
<p:commandButton id="new_student_action" value="Add" update="register_new_student_panel" validateClient="true" action="#{teacherPresentation.newStudentAction()}" />
</h:form>
</h:body>
背豆:
public String newStudentAction() {
FacesContext context = FacesContext.getCurrentInstance();
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Wrong username or password!", "");
context.addMessage(null, message);
context.getExternalContext().getFlash().setKeepMessages(true);
return "teacher.xhtml?faces-redirect=true";
}
我尝试了两件事,但都没有用:
1- 从 p:messages 中删除属性自动更新(失败)
2-在addMessage方法中指定客户端id
context.addMessage(空,消息); --> context.addMessage("growlGeneralMessages", 消息); (也失败了)
我想你有两种选择来控制它
关键选项
p:growl
和 p:messages
都有一个 for
属性,可以让您将该组件绑定到一个键。您可以控制要在每个组件上显示的消息,使用该键作为 FacesContext.addMessage()
clientId
参数
这就是我的意思:
<p:growl for="growlKey"/>
在 BackBean 中:
facesCtx.addMessage("grwolKey", facesMsg);
严重性选项
同样,这两个组件都有一个 severity
参数,可让您控制显示哪些消息。例如,您可以使用 info
表示咆哮,使用 error
表示消息,或其他任何内容.
创建 FacesMessage
时,您可以使用 FacesMessage.Severity
指定严重性。
FacesMessage facesMsg = new FacesMessage(
FacesMessage.SEVERITY_ERROR, "Your title", "Your Message")
希望对您有所帮助!