2011-08-24 69 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