2013-01-11 48 views
1

另一個問題是在JSF中查看範圍內的後臺bean。我在我的視圖scoped後臺bean中創建了一個內部類。這個內部類是轉換器。我需要內部類,因爲我必須從我的支持bean(本例中選擇一個項目的列表)訪問一些字段。突然我發現我的支持bean的@PostConstruct方法是在每次請求後調用的。經過一番檢查後,我意識到轉換器屬性是問題,並經過一些谷歌搜索找到(一如既往)BalusC's blog的原因。如何處理視圖範圍內的後臺bean的內部轉換器

所以,我的問題是如何使我的轉換器工作正常,也有我的轉換所需的數據列表?

回答

1

將轉換器解耦爲獨立類,並使用Application#evaluateExpressionGet()訪問轉換器方法內的視圖範圍的bean實例。

ViewBean viewBean = context.getApplication().evaluateExpressionGet(context, "#{viewBean}", ViewBean.class); 

然而,這是一個有點討厭的設計。如果我瞭解您根據可用項目列表正確轉換選定項目的具體功能要求,可以選擇使用通用轉換器,該轉換器根據物理組件進行轉換。 JSF實用程序庫OmniFaces完全具有兩個轉換器,即SelectItemsConverterSelectItemsIndexConverter

+0

完美,謝謝BalusC。 OmniFaces有其他一些我感興趣的東西,我認爲這是一個開始使用它的時刻。我只是希望它不會導致我一些其他的副作用。 – partlov

+0

不客氣。從版本1.3開始,它應該不會造成任何副作用,據我所知。 – BalusC

相關問題