2011-08-24 68 views
1

我有三个屏幕(views)与每个视图单独托管的豆相关联。 而且,我有一个可以在所有视图中打开的常用弹出对话框。弹出对话框单独托管bean

我可以为状态为@NoneScoped;的弹出单独地定义managedbean,并在每个父级bean中维护它的一个实例吗?或

我是否需要在所有三个父视图中维护弹出式数据?

请给我建议最佳实践。

回答

1

我认为这是你在找什么(看看由BalusC答案) -

Whats the correct way to create multiple instances of managed beans in JSF 2.0

而且因为你(在上面的问题不像@RequestScoped)使用@NoneScoped,我也建议你看看这个答案由BalusC(约@NoneScoped) -

what is none scope bean and when to use it?

而且根据这个答案,你不能保持managedbean是没有范围的任何情况下,因为它们一旦被使用就会被垃圾焚烧。

因此,在你的情况下,因为你有三个单独的视图,对于每个视图,这个bean被构造并用于构建view和garbaged。 (看起来它甚至不会持续一个请求周期)。当你请求另一个视图时,它将是一个单独的实例。

要拥有一个bean的多个实例,您可以在Session-Scoped中拥有三个属性(以使它们在多个视图中生存)。

@ManagedBean 
@SessionScoped 
public class Parent {  
    private Child child1;  
    private Child child2;  
    private Child child3;  

    // ... 
}  
+0

感谢您的回答。另外,提供的链接非常有用。 – Nani

+0

@Nani:如果你有你想要的东西,你可以接受答案。我还建议(只有当你使用jsf 2.0时)才能添加标签'jsf 2.0',以便让更多的人查看和回答你的问题。 –

+0

为了让我的问题更加清晰,我有3个观点;和一个普通弹出窗口。假设,家长管理豆(家长1,家长2,家长3);如果我在每个托管bean中使用Child(popup)instanace,那么如何在常见弹出窗口(xhtml)中绑定变量? – Nani