У меня возникло недоразумение с использованием flash scope в jsf 2.
Я хочу поместить объект во флэш-карту во время моего действия и показать этот объект на следующей странице.
Вот мое действие (вызов 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).
Может быть, что-то не так в моем коде.
Кто-нибудь может мне помочь?
Спасибо