我有一個ICEFaces的應用我們。一個頁面有兩個在頁面上顯示不同內容的bean。通報一個豆從另一個在ICEFaces的
我希望能夠當另一個豆子改變了對bean的東西,使得第一豆更新其網頁上的內容,以通知的bean。
這有可能在ICEFaces的?如果是的話如何?
感謝,
擔
我有一個ICEFaces的應用我們。一個頁面有兩個在頁面上顯示不同內容的bean。通報一個豆從另一個在ICEFaces的
我希望能夠當另一個豆子改變了對bean的東西,使得第一豆更新其網頁上的內容,以通知的bean。
這有可能在ICEFaces的?如果是的話如何?
感謝,
擔
你可以做的是「注入」到bean1 bean2,所以bean2將有機會獲得目前在bean1任何方法。
<bean id="bean1" class="foo.bar.Bean1"/>
<bean id="bean2" class="foo.bar.Bean2">
<property id="bean1" ref="bean1"/>
</bean>
和bean2的Java代碼:如果你不使用Spring
public class Bean2 {
private Bean1 bean1 = null;
// The setter will be used by Spring to inject Bean1 in Bean2...
public void setBean1(Bean1 bean1) {
this.bean1 = bean1;
}
...
public void someMethod() {
...
// Now, you can call the bean1 instance to update what you want...
bean1.updateSomething();
}
}
:
如果你使用Spring,這可以很容易地定義Bean時完成
您可以像這樣直接訪問bean2代碼中的bean1實例:
Bean1 bean1 = (Bean1) FacesContext.getCurrentInstance().getCurrentInstance()
.getExternalContext().getSessionMap().get("bean1");
我打算髮表一些我自己的作品的例子,但ICEFaces blog的傢伙已經有了一篇非常好的博客文章。看一看。
正如已經指出的那樣,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>
至於更新用戶界面時,豆值發生改變,可以通過與常規網頁客戶端交互觸發。但是,如果你正在做一個協作型應用程序(其中一個用戶的變化可以更新值,其他用戶可以看到),然後ICEfaces的有一個名爲Ajax的推送,您可以使用的功能。查看他們的文檔以獲取更多信息。
+1這一點都很有幫助。對我來說。 – Nico 2009-09-08 09:47:13