两豆之间的沟通

时间:2014-03-16 23:38:54

标签: jsf communication oracle-adf managed-bean

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

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

我怎样才能做到这一点?

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

1 个答案:

答案 0 :(得分: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。你必须在里面插入一个<managed-property>标签,并引用你要注入的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的实例变量,然后您可以使用它来获取其当前状态。