【发布时间】:2012-02-27 06:14:38
【问题描述】:
我对在 jsf 2 中使用 flash 作用域有一个误解。 我想在我的操作过程中将一个对象放入闪存映射中,并在下一页中显示该对象。 这是我的操作(由 h:commandLink 调用):
public String showDetail(PersonneDTO personne) {
MessageFlashBean message = new MessageFlashBean();
message.addMessage("test");
FacesContext.getCurrentInstance().getExternalContext().getFlash()
.put("test", message);
return "showDetail";
}
这只是一个测试,但我要使用的真实对象更复杂。
这是第二页使用闪光灯:
<ui:fragment rendered="#{flash.test != null and flash.test.hasMessage()}" >
<ui:repeat var="message" value="#{flash.test.messages}">
#{message}
</ui:repeat>
</ui:fragment>
这是导航(这是我的问题:)):
<navigation-rule>
<from-view-id>/index.xhtml</from-view-id>
<navigation-case>
<from-outcome>showDetail</from-outcome>
<to-view-id>/private/showDetail.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
在这种情况下,flash 示波器工作正常,并且出现了我的消息。
但如果我在导航案例中添加重定向,我在 Flash 地图中的对象已经消失了。
我不明白为什么我不能在导航规则中使用重定向(我认为这是 Flash 范围的目标)。
可能是我的代码有问题。
有人可以帮助我吗?
谢谢
【问题讨论】:
-
我在 JSF 2.0.3.FCS 上试过,它确实在重定向中幸存下来。
标签: jsf-2 navigation flash-scope