JSF 2.0,Primefaces
我有一个基于会话的bean(Bean1)和相应的视图,其中包含动态修改数据的ajax调用。这是理想的,因为它不需要在非ajax按钮提交时加载页面。
然而 - 我正处于这样一种情况:他们希望在同一个浏览器中打开多个视图,并允许每个视图独立工作(这更像是一个请求范围)。因此,一个参数在技术上是“请求”。但是 - 我想要会话视图给我的AJAX功能。显然,这个参数因为它的会话在浏览器之间共享。这导致了可用性问题。
是否可以将一个“作用”的参数作为请求参数而不是会话?因此,每个窗口都对会话视图开放,但参数处于“请求”模式,并单独分配给窗口。
答案 0 :(得分:3)
只需将bean放在视图范围内而不是会话范围内。
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean
@ViewScoped
public class Bean1 implements Serializable {
// ...
}
这样每个浏览器选项卡/窗口都会自动按照您的意图自动获取自己的实例,而无需手动请求参数hackery。