【问题标题】:Separate Managed bean for a popup dialog用于弹出对话框的单独托管 bean
【发布时间】:2011-11-02 18:26:52
【问题描述】:

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

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

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

请给我建议最佳做法。

【问题讨论】:

    标签: jsf


    【解决方案1】:

    我认为这就是您正在寻找的(查看 BalusC 的答案)-

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

    而且由于您使用的是@NoneScoped(与上述问题中的@RequestScoped 不同),我还建议您查看BalusC 的这个答案(关于@NoneScoped)-

    what is none scope bean and when to use it?

    根据这个答案,您不能维护任何非作用域的 managedbean 实例,因为它们一被使用就会被丢弃。

    因此,在您的情况下,由于您有三个单独的视图,因此对于每个视图,都会构造 bean 并用于构建视图并进行垃圾处理。 (看起来它甚至不会持续一个请求周期)。当您请求另一个视图时,它将是一个单独的实例。

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

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

    【讨论】:

    • 感谢您的回答。此外,提供的链接非常有用。
    • @Nani:如果你得到你想要的,你可以接受答案。我还建议(仅当您使用 jsf 2.0 时)添加标签 jsf 2.0 以便让更多人查看和回答您的问题。
    • 为了更清楚地说明我的问题,我有 3 个观点;和一个常见的弹出窗口。假设,Parent Managed Beans(Parent1, Parent2, Parent3);如果我在每个托管 bean 中使用 Child(popup) 实例,那么如何在 common popup(xhtml) 中绑定变量?
    • @Nani:你去第一个链接看答案了吗?为什么您实际上要维护 Parent bean 的三个独立实例?
    • Parent1 描述了 BenzCar (ViewScreen1),Parent2 描述了 VolkswagenCar (ViewScreen2)。显示每辆车的技术规格(弹出窗口);规格属性名称相同,但每辆车的值会有所不同。如何使用一个常见的弹出窗口到两个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2012-12-26
    • 2023-03-09
    相关资源
    最近更新 更多