错误:FacesContext已经被释放



下面的代码正在处理请求范围管理bean,并且消息显示在p:messages标记中:

FacesContext context = FacesContext.getCurrentInstance();
public void addAction() {
    if(commande.exists()) {
                context.addMessage("Commande", new FacesMessage(
                        FacesMessage.SEVERITY_ERROR,"Error Message : commande exists", null));
    } else {
        commandeService.create(commande);
    }
}

当我试图在视图范围 Managed Bean中使用它时,它在日志记录器中给出错误消息:

Error the FacesContext is already released!

和JSF页面挂起而不显示面孔消息

您应该永远不要FacesContext的当前实例或其任何属性分配为托管bean的属性。当前实例仅在当前HTTP请求中有效,它将在HTTP请求结束时销毁,并且在任何后续HTTP请求中不再有效。

你应该总是在方法的局部作用域中获取当前实例。

public void addAction() {
    if (commande.exists()) {
        FacesContext.getCurrentInstance().addMessage("Commande", new FacesMessage(
            FacesMessage.SEVERITY_ERROR, "Error Message : commande exists", null));
    } else {
        commandeService.create(commande);
    }
}

相关内容

  • 没有找到相关文章

最新更新