【问题标题】:Communication between two beans两个bean之间的通信
【发布时间】:2014-03-16 23:38:54
【问题描述】:

我在一个页面上有两个区域和两个任务流。在第一个任务流中,管理 bean 在页面流范围内,而在第二个任务流中,它在支持 bean 范围内。我的要求是我想从第二个 bean 中调用一个 bean 的方法,反之亦然。

例如:在第一个 jsff 上,如果发生某些动作,那么它的动作将转到它的 bean,从那里我需要调用第二个 bean 的方法,反之亦然。

我怎样才能做到这一点?

由于两个任务流将同时运行,所以我需要获取正在运行的 bean 实例,以便获取当前状态/值 UI 组件。

【问题讨论】:

    标签: jsf communication oracle-adf managed-bean


    【解决方案1】:

    所有你需要做的就是注入你想在另一个 bean 中使用其方法的 bean。在 ADF 中,有一种简单的方法可以实现这一点。您的 WEB-INF 文件夹中应该有一个名为 adfc-config.xml 的文件。如果您打开它的源代码,您会注意到每个 bean 都在 <managed-bean> 标记中进行了描述。它会是这样的:

    <managed-bean id="__2">
        <managed-bean-name>bean1</managed-bean-name>
        <managed-bean-class>com.domain.Bean1</managed-bean-class>
        <managed-bean-scope>view</managed-bean-scope>
    </managed-bean>
    

    对于每个 bean。您必须在其中插入一个 &lt;managed-property&gt; 标记,其中包含您要注入的 bean 的引用,就像这样:

    <managed-bean id="__2">
        <managed-bean-name>bean1</managed-bean-name>
        <managed-bean-class>com.domain.Bean1</managed-bean-class>
        <managed-bean-scope>view</managed-bean-scope>
        <managed-property>
            <property-name>bean2</property-name>
            <value>#{Bean2}</value>
        </managed-property>
    </managed-bean>
    

    另外,在 Bean1 类中你必须创建一个 Bean2 的实例变量,然后你可以使用它来获取它的当前状态。

    【讨论】:

      猜你喜欢
      • 2018-06-05
      • 2012-12-20
      • 1970-01-01
      • 1970-01-01
      • 2012-06-26
      • 2019-03-26
      • 2011-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多