2012-11-20 151 views
6

我想訪問Servlet中的視圖範圍託管bean。如何從Servlets訪問@ViewScoped託管bean?

我搜索了類似的問題,並得到這些的:

how to get beans from view scope它採用FacesContext.getCurrentInstance(),不適用一個Servlet內,因爲它應該給一個空的結果

JSF - get managed bean by name它把所有其他範圍,但不viewscope

我會認爲這是不可能的,是嗎?

有一個簡單的解決方案來將該bean作用域更改爲會話作用域,但這是最後的機會,因爲我擔心內存消耗。

我的最終需求如下:managebean包含dataTable中顯示的一些數據。同一頁面應該包含這些數據的圖表表示形式(強制性)。該圖像可以由一個Servlet生成,但它需要訪問數據或從數據庫重新加載它們。

我也嘗試了PrimeFaces 2.X中的<p:graphicImage>,但它與viewcope bean不兼容。任何建議?

回答

6

這是不可能的,沒有。視圖範圍綁定到一個特定的JSF視圖,這在純HTTP HTTP servlet請求中無效。請注意,您無法在普通的HTTP Servlet請求期間訪問具體的請求範圍的bean,它們總是會返回null

會話範圍是最好的,你可以得到。一旦你在servlet中完成它,你可以從會話範圍中刪除該屬性。

session.removeAttribute("somename"); 
+0

無論我有JSF相關的問題,我知道我可以依靠你。謝謝 – Filippo

+0

不客氣:) – BalusC

+0

> BalusC說:「請注意,在一個簡單的HTTP servlet請求期間,您無法訪問具體的請求範圍的bean ......」您能解釋一下爲什麼嗎?謝謝。 –

相關問題