<分区>
我有一个我认为是常见的问题:一些托管 bean 有一个将一些消息添加到上下文的操作:
FacesMessage fm = new FacesMessage("didn't work");
fm.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage(null, fm);
return "some-outcome";
然后我将结果映射到 faces-config.xml
并将其配置为
<navigation-case>
<from-outcome>some-outcome</from-outcome>
<to-view-id>/view.xhtml</to-view-id>
<redirect/>
</navigation-case>
在 view.xhtml
中,我显示消息:
<h:message globalsOnly="true" />
但是,它不起作用,因为在执行重定向时消息丢失了。
我该如何解决?我找到了这个 amazing post解释如何使用 PhaseListener
来做到这一点,但我相信这种情况太常见了,必须以这种方式解决。我错了吗?我应该创建 PhaseListener
吗?还是有其他一些标准解决方案?