Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 在ICEFaces中从一个bean通知另一个bean_Jsf_Icefaces - Fatal编程技术网

Jsf 在ICEFaces中从一个bean通知另一个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,它们在页面上显示不同的内容

我希望能够在另一个bean更改bean上的某些内容时通知一个bean,以便第一个bean更新页面上的内容

这在冰面上可能吗?如果是,怎么做

谢谢

Tam

您可以做的是将bean1“注入”到bean2中,这样bean2就可以访问bean1中存在的任何方法

如果您使用的是Spring,那么在定义bean时可以很容易地做到这一点:

<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>