2012-09-01 172 views
2

如何從Servlet訪問JSF ViewScoped託管bean?從Servlet訪問JSF ViewScoped託管bean

(假設有問題的託管bean已經被創建,並且仍然沒有被摧毀)

+0

如果您需要訪問超出範圍的bean,這表明它沒有被適當的範圍。 – McDowell

+0

只要相應的頁面是活的,ViewScoped bean就是活的,那麼爲什麼我不能從該頁面調用Servlet? – siva636

+0

請參閱下面的答案 – McDowell

回答

4

查看範圍的變量都存儲在view map的組件樹。要在視圖上下文之外訪問這些數據,您需要輸入create a JSF contextrestore the view作爲請求。這涉及重寫JSF container提供的大部分功能。

JSF 2提供了與服務器端狀態交互但不刷新頁面的機制:AJAX tagsJSF JavaScript API。如果可能的話,我會考慮利用這些。

替代地,將數據轉換成範圍是經由servlet的方便(會話)

由於視圖狀態在會話一般認爲,很可能技術上可以從訪問視圖狀態這裏。但是這會涉及特定於實現的黑客行爲,而這些黑客行爲可能無法在底層框架的升級中倖存。我甚至不會將此視爲解決方案。