我有一个页面,在那里我添加新条目。当我保存数据时,我跳转到另一页,想看到显示“数据已成功保存”的消息。我了解到这个消息属于请求范围,因此我使用闪存范畴。
context.addMessage("calendarGameForm:growl", new FacesMessage("Data was saved successful");
context.getExternalContext().getFlash().setKeepMessages(true);
return outcome;
这是由第一页addSeason.xhtml
上的保存按钮调用的。
<p:commandButton id="save" action="#{controller.add}"
value="#{msg.save}" ajax="true"
type="submit" update="@form"/>
导航规则定义如下。
<navigation-rule>
<from-view-id>/competitions/addSeason.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/competitions/calendarGame.xhtml</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>fail</from-outcome>
<to-view-id>/competitions/calendarGame.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
但是在目标页面 calendarGame.xhtml
上,我没有收到我的消息。
<p:growl id="growl" globalOnly="true" sticky="true"/>
我在服务器日志中也收到了这个警告。
警告 [javax.enterprise.resource.webcontainer.jsf.flash] (ajp--127.0.0.1-8009-1) JSF1095: 在我们尝试为flash设置输出cookie时,响应已经被提交。任何存储到flash中的值都将无法在下一个请求中使用。
我该如何解决我的问题?