【发布时间】:2013-06-19 05:15:01
【问题描述】:
我有一个使用 JSF2 + PrettyFaces + EBJ3 + Glassfish 的 Java EE 应用程序
我最近刚刚更新到 Glassfish4,它是 Java EE 7 的默认服务器实现,我开始遇到 PrettyFaces 的问题。
我已经在我的 faces-config.xml 上进行了配置:
<lifecycle>
<phase-listener>com.ocpsoft.pretty.faces.event.MultiPageMessagesSupport</phase-listener>
</lifecycle>
使 Faces 消息能够正确传递并显示在屏幕上。
但自从我从 Glassfish3 升级到 4 后,我开始遇到这个问题:
java.lang.IllegalStateException:响应后无法创建会话 已承诺 ...
at com.ocpsoft.pretty.faces.util.FacesMessagesUtils.saveMessages(FacesMe
ssagesUtils.java:56)
at com.ocpsoft.pretty.faces.event.MultiPageMessagesSupport.afterPhase(Mu
ltiPageMessagesSupport.java:66)
如果我从 faces-config.xml 中删除侦听器,屏幕上不会显示任何 Faces 消息。
我正在使用 PrettyFaces 来获得格式良好的 URL,以增强我网站上的 SEO。我希望我不必替换它或重构我的应用程序以不使用它,因为我已经使用它映射了很多导航流。有人知道这种情况的更好选择吗? 我真的很感激任何建议。谢谢。
【问题讨论】:
-
我不是 PrettyFaces 方面的专家,但调整 state saving method 可能有助于解决这个问题。 GF4 附带的 JSF2.2 尚未正式发布,所以这是某个地方的错误(或某些不兼容)。
标签: jsf-2 prettyfaces glassfish-4