我有一个页面,当我保存数据时添加新项目我转到另一个页面,我想看到“数据已成功保存”的消息。我读到该消息属于请求范围,这就是我使用闪存范围的原因。
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 时,响应已经提交。存储到闪存中的任何值在下一次请求时都将不可用。
我怎样才能解决我的问题?