用于多个选项卡的JSF多实例管理bean



有一个托管bean(DemoManagedBean.java),它保存(sample.xhtml)XHTML页面上的一些数据。

在sample.xhtml中有一个重定向链接,它打开了同一页面(sample.xhtml)的新选项卡,但加载了不同的数据。

问题-由于只有一个DemoManagedBean.java实例,因此无法进一步处理任何事情,即;一个选项卡上的更改会影响所有其他选项卡。

是否有一种方法,使我可以有多个实例的每个选项卡持有特定选项卡的数据?

谢谢,

Dinesh

可以通过设置正确的bean 作用域来控制。在您的特殊情况下,您需要将bean放在请求作用域或视图作用域中,这取决于您是否需要基于每个视图的状态。

使用标准的JSF bean管理API,就是这样(不需要XML !):

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean
@RequestScoped
public class DemoManagedBean {
    // ...
}

未指定@XxxScoped范围注释时,默认为@NoneScope。但是,您的描述与会话或应用程序范围匹配。也许您已经显式地设置了@SessionScoped@ApplicationScoped注释,但并不真正理解您实际在做什么。或者由于某种原因,您可能正在使用Spring来管理bean,没有任何显式作用域的Spring @Controller指定了默认应用程序作用域。

参见:

  • 如何选择合适的bean scope?

最新更新