下面是我嘗試做的一個例子。使用Session和View來瀏覽視圖scoped託管bean JSF 2.0
在sessionScoped豆
SessionBeanloadRecord(){
Do something
ViewScopedBean viewScopedBean = (ViewScopedBean) context.getApplication().evaluateExpressionGet(context, "#{viewScopedBean}", ViewScopedBean.class);
return viewScopedBean.viewScopedBeanLoadRecord();
}
在viewScoped豆
ViewScopedBeanloadRecord(){
Retrieve and populateFields
return "viewRecord.xhtml";
}
所以在堅果殼我想調用的圖中的方法從另一個bean這是對另一個作用域bean查看(listRecords.xhtml)。 當我運行這個(只使用一個標準的命令鏈接)時,會話bean按我的預期工作,viewScoped bean被創建並且ViewScopedBeanloadRecord方法被調用但是那麼viewScoped bean被重新創建(構造函數被再次調用),但是這次ViewScopedBeanloadRecord未運行,頁面加載空白字段。
據我所知,只要您返回null(或有一個void方法)留在相同的視圖,但你如何從listRecords.xhtml過渡到viewRecord.xhtml並運行加載方法?
一旦我在viewRecord.xhtml視圖中,我也將被要求同時加載更多的記錄(在不同的瀏覽器窗口中),所以我不能保留會話中的記錄。
請注意:根據公司政策,我不允許發佈實際的代碼,所以這個例子是我所限制的。抱歉!
任何幫助,將不勝感激!
感謝
埃裏克
所有與此解決方案的會話中,因爲它們始終被引用,所以JVM永遠不會銷燬它們,直到會話結束。這就像所有的豆被標記爲「sessionScoped」。 – 2012-11-28 16:16:50