Jsf 在ICEFaces中从一个bean通知另一个bean
我有一份申请表。一个页面有两个bean,它们在页面上显示不同的内容 我希望能够在另一个bean更改bean上的某些内容时通知一个bean,以便第一个bean更新页面上的内容 这在冰面上可能吗?如果是,怎么做 谢谢 Tam您可以做的是将bean1“注入”到bean2中,这样bean2就可以访问bean1中存在的任何方法 如果您使用的是Spring,那么在定义bean时可以很容易地做到这一点:Jsf 在ICEFaces中从一个bean通知另一个bean,jsf,icefaces,Jsf,Icefaces,我有一份申请表。一个页面有两个bean,它们在页面上显示不同的内容 我希望能够在另一个bean更改bean上的某些内容时通知一个bean,以便第一个bean更新页面上的内容 这在冰面上可能吗?如果是,怎么做 谢谢 Tam您可以做的是将bean1“注入”到bean2中,这样bean2就可以访问bean1中存在的任何方法 如果您使用的是Spring,那么在定义bean时可以很容易地做到这一点: <bean id="bean1" class="foo.bar.Bean1"/> <be
<bean id="bean1" class="foo.bar.Bean1"/>
<bean id="bean2" class="foo.bar.Bean2">
<property id="bean1" ref="bean1"/>
</bean>
如果不使用Spring:
您可以在bean2代码中直接访问bean1实例,如下所示:
Bean1 bean1 = (Bean1) FacesContext.getCurrentInstance().getCurrentInstance()
.getExternalContext().getSessionMap().get("bean1");
我本来打算发布一些我自己的作品的例子,但是网上的人已经有了一篇非常好的博客文章。看一看。如前所述,JSF也可以进行简单的注入。在您的faces-config.xml文件中类似这样的内容:
<managed-bean>
<managed-bean-name>bean1</managed-bean-name>
<managed-bean-class>org.icefaces.sample.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>bean2</managed-bean-name>
<managed-bean-class>org.icefaces.sample.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>bean1</property-name>
<value>#{bean1}</value>
</managed-property>
</managed-bean>
bean1
org.icefaces.sample.Bean
要求
bean2
org.icefaces.sample.Bean
要求
bean1
#{bean1}
至于在bean值更改时更新用户界面,这可以通过与页面的常规客户端交互来触发。但是,如果您正在开发一个协作型应用程序(其中一个用户的更改可以更新其他用户可以看到的值),那么ICEfaces有一个称为Ajax推送的功能,您可以使用它。查看他们的文档以了解更多信息
<managed-bean>
<managed-bean-name>bean1</managed-bean-name>
<managed-bean-class>org.icefaces.sample.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>bean2</managed-bean-name>
<managed-bean-class>org.icefaces.sample.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>bean1</property-name>
<value>#{bean1}</value>
</managed-property>
</managed-bean>