我在一个页面上有两个区域和两个任务流。在第一个任务流中,管理bean位于页面流作用域,而在第二个任务流中,管理bean位于后台bean作用域。我的要求是我想从第二个bean调用一个bean的方法,反之亦然。
例如:在第一个jsf上,如果发生了一些动作,那么它的动作将转到它的bean,从那里我需要调用第二个bean的方法,反之亦然。
我怎样才能做到这一点?
由于两个任务流将同时运行,因此我需要获得bean的运行实例,以便我可以获得当前状态/值UI组件。
您所需要做的就是在另一个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的实例变量,然后您可以使用它来获取其当前状态。