我有我认为是一个常见的问题:一些托管bean有一个动作,它向上下文添加一些消息:
FacesMessage fm = new FacesMessage("didn't work");
fm.setSeverity(FacesMessage.SEVERITY_ERROR);
FacesContext.getCurrentInstance().addMessage(null, fm);
return "some-outcome";
Run Code Online (Sandbox Code Playgroud)
然后我将结果映射faces-config.xml并配置为
<navigation-case>
<from-outcome>some-outcome</from-outcome>
<to-view-id>/view.xhtml</to-view-id>
<redirect/>
</navigation-case>
Run Code Online (Sandbox Code Playgroud)
在view.xhtml我提出的信息:
<h:message globalsOnly="true" />
Run Code Online (Sandbox Code Playgroud)
但是,它不起作用,因为执行重定向时消息会丢失.
我该如何解决?我发现这个惊人的帖子解释了如何使用a来做,PhaseListener但我相信这种情况太常见了,不能用这种方式来解决.我错了吗?我应该创建PhaseListener吗?或者是否有其他标准解决方案?