【问题标题】:Multipe managed beans with multiple xpages具有多个 xpage 的多个托管 bean
【发布时间】:2012-04-16 14:22:09
【问题描述】:

我在这里可能是个白痴,但我有一个关于 xpages 和托管 bean 的问题。我试图通过将逻辑移动到对应于实体(或多或少的文档)的 bean 来分离逻辑和表示。我有一个数据提供者类来获取和设置数据。这很好,只有一个 xpage,但是随着应用程序在关系和多个 xpage 方面变得更加先进,我遇到了一个问题(我正在寻找http://blog.mindoo.com/web/blog.nsf/dx/18.03.2011104725KLEDH8.htm?opendocument&comments#anc1 的灵感)。

如果我没记错的话,我不能将不同的托管 bean 分配给不同的 xpage,因此无法在 faces-config.xml 中为不同的 xpage 设置不同的 data-provider-classes 和 businesslogic-beans。现在我可能会以错误的方式解决这个问题,但任何指针都非常感谢。

最好的尊重 奥洛夫

【问题讨论】:

    标签: xpages


    【解决方案1】:

    您不能为特定的 xpage(据我所知)分配托管 bean(如在 faces-config 中定义它们)。它们是特定于应用程序的。我认为您正在寻找类似工厂模式/创建者模式的东西。这些是用于创建特定类的实例的设计模式。欲了解更多信息,请参阅:Factory method pattern WikipediaCreational patterns wikipedia

    例如,当您创建比萨店网站时,您可以拥有一个工厂来创建特定类型的比萨饼,具体取决于您按下的按钮。然后在内存 (bean) 中创建每个比萨饼并用作自定义控件的数据源。当客户准备好订购比萨饼时,它会保存到 notesdocument(已保存状态)中,并与为该客户订购的所有其他产品一起转换。

    每当您想再次取回该特定披萨时(例如,当您想检查客户订购的披萨时)您只需要询问工厂是否可以获得带有编号/ID 的披萨,工厂将退回该披萨来自notesdocument。一次构建,多次使用。

    所以基本上每个页面没有多个托管 bean,而是每个应用程序,您可以在需要它们的任何地方在应用程序中使用它们。

    【讨论】:

    • 托管 Bean 具有更多的范围,例如 SessionFacade(也是一种设计模式),并且可以表示应用程序的公共 API。根据您在 faces-config.xml 中定义的范围,您可以处理 bean 的生命周期。
    【解决方案2】:

    将 bean 视为“全局变量”,因此您可以通过定义不同的名称来拥有不同的功能。例如:“invoice”、“customer”、“order”、“orderItem”等。这取决于你。

    【讨论】:

    • 感谢您的快速答复!我正在考虑这一点,但希望为不同的实体提供不同的子类,以使其更易于管理(如果可能的话..)
    • 我不确定你的问题到底是什么——你可以为每个 bean 设置不同的类。请编辑您的问题并添加有关您的设置和您面临的问题的更多详细信息。
    猜你喜欢
    • 2012-03-29
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 2013-09-10
    • 2017-04-07
    • 2019-10-25
    相关资源
    最近更新 更多