我有一个viewScoped bean,它有一些业务逻辑验证。 我使用
将此验证产生的错误显示在页面中FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(severity, result, null));
问题是:
我使用以下代码解决了这个问题:
FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);
现在的问题是业务逻辑验证消息持续时间过长:
我该如何解决这个问题?
答案 0 :(得分:2)
根据您的问题评论,您使用的是Mojarra 2.0.3:
[JSFImplManagementDeployer] Initialized 3 JSF configurations: [Mojarra-1.2, MyFaces-2.0, Mojarra-2.0] [javax.enterprise.resource.webcontainer.jsf.config] Initializing Mojarra 2.0.3 ( b05)
这真是一个古老的Mojarra版本。它已经超过3.5岁了! (2010年7月发布)。具体问题是由issue 1751特别引起的,该问题在2.0.7 / 2.1.4中得到修复。然而,之后有许多与闪存范围有关的其他问题报告。闪存范围是较旧的Mojarra版本,因以下主要问题而闻名:
总而言之,结论是你需要升级到最低的Mojarra 2.1.27 / 2.2.5才能摆脱所有这些问题。
记录器中的JSFImplManagementDeployer
条目可以从JBoss 6.x中识别出来。古老的Mojarra 2.0.3反过来表明你仍在使用第一个JBoss 6.0.0版本。这充满了bug,强烈建议升级到更新的JBoss服务器,不仅要修复Mojarra问题,还要修复其他许多问题。考虑升级到JBoss AS 7.3.x或EAP 6.2.x.如有必要,您可以根据此答案中的说明升级其捆绑的Mojarra:Upgrade JSF / Mojarra in JBoss AS / EAP / WildFly。