我尝试在从create_user页面重定向到用户列表后成功创建用户的情况下显示成功消息。
这段代码特别适用于Chrome,Firefox和Edge浏览器。
在尊重的xhtml页面上创建用户的按钮:
<p:commandButton actionListener="#{myHandler.createUpdateUser}" value="#{msg.save}" />
调用此特定代码:
@ManagedBean
@ViewScoped
public Class myClass implements Serializable {
public void createUpdateUser(){
myBean.createUpdateUser();
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, msg, StringUtils.EMPTY));
externalContext.getFlash().setKeepMessages(true);
externalContext.redirect(new StringBuilder(externalContext.getRequestContextPath())
.append("/users/list_users.jsf");
}
}
两个页面都可以显示如下消息:
<p:messages id="messages" autoUpdate="true" />
现在它仅适用于Firefox和Edge。 在chrome中创建用户时,成功消息会在create_user页面上自动显示,并成功重定向到列表页面而不显示消息。该消息也不在FacesContext.getMessageList()中; 我尝试在actionButton中从actionListener切换到action 成功地为Chrome工作,但遗憾的是其他两个工作不正确。
我正在使用Primefaces v6.0,java 1.8,jboss eap 7。
Chrome版本64.0.3282.186(官方版本)(64位)
任何想法出了什么问题?