对于每个视图,我有三个屏幕(views)
与单独的管理bean相关联。并且,我有一个通用的弹出对话框,可以在所有视图中打开。
我可以为状态为@NoneScoped;
的弹出框单独定义managedbean
并在每个父bean中维护它的实例吗?或者
我需要在所有三个父视图中维护弹出式数据吗?
我想这就是你正在寻找的(查看BalusC的答案)-
在JSF 2.0中创建托管bean的多个实例的正确方法是什么
既然你正在使用@NoneScoped(不像上面问题中的@RequestScoped),我还建议你看看BalusC的这个答案(关于@NoneScoped) -
什么是none作用域bean以及何时使用它?
根据这个答案,您不能维护任何无作用域的managedbean实例,因为它们一旦被使用就会被丢弃。
因此,在您的情况下,由于您有三个独立的视图,对于每个视图,bean被构造并用于构建视图和垃圾。(看起来它甚至不会持续一个请求周期)。当你请求另一个视图时,它将是一个单独的实例。
要拥有bean的多个实例,您可以在Session-Scoped
中拥有三个属性(以使它们在多个视图中存活)。
@ManagedBean
@SessionScoped
public class Parent {
private Child child1;
private Child child2;
private Child child3;
// ...
}