2012-05-25 62 views
2

我正在使用JSF 1.2在WAS 7上部署portlet到WebSphere Portal Server 6.1的項目。出於各種合同/政治原因,我們一直堅持JSF 1.2。使用Spring beans在JSF 1.2中模擬jsf 2.0視圖範圍

但是,我們在整個應用程序中使用Spring bean以獲取AoP日誌記錄。

有些煩人,我們不能使用JSF 2.0。特別是,視圖範圍將是我們的應用程序的理想選擇。這將是一個高用量的網站,並保持會話範圍內的所有頁面bean是浪費的,我肯定會在稍後引起我們的非功能測試團隊的注意。

我想到我可以通過使用Spring的自定義作用域和一個自定義JSF組件來模擬View Scope,該組件僅維護由Spring作用域設置的活動bean映射並將此組件附加到頁面上。加上自定義變量解析器可以在這個地圖找到豆,我們應該能夠仿效視圖範圍

(我們的旅程只有4頁,而且每一頁都有幾回發到同一頁)

這種方法聽起來如何?我想確保在向項目同事展示這些內容之前,我不會在某種程度上讓自己陷入困境,然後開始拆分我們已經編寫的代碼。

回答

3

不確定Spring,但對於JSF 1.2託管bean,Tomahawk's<t:saveState>是讓JSF 1.2請求作用域bean行爲(幾乎)與JSF 2.0視圖作用域bean完全相同的方式。幾乎,因爲在JSF 2.x中視圖的銷燬和狀態保存更有效率。但效果最終是一樣的。

所有你需要做的是通過標記在視圖中的其他地方引用的bean:

<t:saveState value="#{bean}" /> 
+0

這聽起來像T:saveState和不正是我提議,但同樣,由於政治原因,我們」再次堅持香草JSF :(IBM已告訴我們,他們將「只在門戶6.1/7上正式支持vanilla JSF 1.2」,儘管JSF2應該可以工作「 - 我們的管理人員已將這意味着」你只能使用JSF 1.2而不是第三版黨的圖書館「) - 但我們在xhtml演示文稿的下一層使用Spring。 –

+0

所以即使沒有JSF 1.2組件庫?那麼,Tomahawk是開源的,你可能想要環顧和/或「借用」''的來源(在弄清了許可問題之後......)。 – BalusC

+0

是的,我會做到這一點,謝謝! –