4

我有一个 JSF 问题,我认为可以通过添加对FacesContext.getCurrentInstance().getExternalContext().getFlash().setKeepMessages(true);. 但是,我不清楚其中的一些含义。该keepMessages属性是否会保留true在整个应用程序中?

这是一个成熟的应用程序,所以我担心设置这个属性会导致一堆消息突然开始弹出。如果它确实存在,有什么方法可以只为下一个重定向设置这个属性?还是我需要手动将其切换回false某个地方?

4

1 回答 1

4

keepMessages 属性是否会在整个应用程序中保持为真?

不,它仅适用于当前的“flash session”。即只是当前的HTTP 请求。它在同一会话的下一个请求中被清除。

另请参阅类的 javadoc

Flash 概念取自 Ruby on Rails,它提供了一种在面孔生命周期生成的用户视图之间传递临时对象的方法。和 Rails 一样,任何放在 flash 中的东西都会暴露给同一个用户会话遇到的下一个视图,然后清除掉

方法的 javadoc

setKeepMessages

...

参数:

newValue- 此会话中此属性的新值

然而,应该指出的是,Mojarra 有几个与闪光范围有关的严重问题。例如,当您导航到不同的路径时,该消息不会出现。或者,当您碰巧导航到同一路径时,该消息将重新出现在不同的窗口中。那种东西。然而,自 Mojarra 2.1.18 以来,所有这些问题都已得到修复。只剩下一个安全漏洞,另请参阅issue 2126,由我的同事 Arjan Tijms 发现并报告。只要您不将敏感信息放在诸如信用卡号左右的闪存消息中,这是无害的。

于 2013-06-24T21:37:35.943 回答