2012-12-04 90 views
2

我一直在開發Spring 3 + JSF 2.0應用程序一段時間。他們在簡單的Tomcat或Jetty容器上運行。展望廣告CDI我羨慕談話範圍。春季的CDI式對話範圍

您是否知道Spring的簡單對話範圍實現?我不想使用全面的SpringMVC + WebFlow + SpringFaces堆棧。我只需要一個可以啓用對話範圍的網頁過濾器,並讓我注入對話對象並啓動或停止它。就像在CDI中一樣。

回答

0

在託管bean上使用JSF @ViewScoped註釋,該註釋爲您提供與CDI對話範圍相同的對話式語義。 CDI的對話範圍和JSF的視圖範圍之間的一個區別是,CDI使您可以明確和直接地控制對話,而JSF視圖範圍幾乎可以使用。但是通過JSF的ViewScope,您可以確切知道對話邊界的位置:當您加載以@ViewScoped bean備份的頁面並在頁面關閉時結束時,會話開始。這對於許多用例很方便

Cagatay的primefaces也有this hack來模擬Spring中的CDI範圍。

This tutorial從RichFaces的團隊最大卡茨也給出了很好的介紹了JSF ViewScope

+0

其實我知道Spring的視圖範圍。到目前爲止,我已經使用了Cagatay的一個。請注意,視圖範圍保留在JSF的視圖根目錄中。所以它在POST-backs上維護,並在GET時刷新。實際上,差異 - 跨越不同頁面的對話並不刷新頁面重新加載是我需要的。我不想爲此使用會話範圍。 –

2

不完全是你的問題,但因爲你是爲了避免使用Spring的Webflow,春天面要求的解決方案,等等......看起來你只是爲DI使用Spring(我的意思是你不太依賴Spring的生態系統)。那麼,在這種情況下,可能需要考慮遷移到Java EE 6堆棧。我認爲遷移不會那麼困難,因爲你使用的並不是Spring的那麼多,如果你春天還有豆子,你仍然需要,你可以爲它們編寫一些CDI生產者。你可以從谷歌的一些遷移路徑從Spring到Java EE 6.

如果你害怕「沉重的Java EE容器」,以及jboss 7.1,Glassfish 3.1.2和TomEE都開始在我的筆記本中2秒,我敢打賭你的tomcat + spring容器啓動速度並不快。

只是我的意見。

2

你應該給看看到Apache TomEE + CODI項目(Apache的MyFaces的學科)和/或Apache Deltaspike(不知道該文檔是最新的,因爲它是非常年輕)

TomEE給你力量的CDI和CODI在cdi和jsf之間增加了一個小的集成層,使它非常強大(它將被集成到deltaspike中,但仍然有點進展)

1

MyFaces Orchestra(也可用於Mojarra)是目前最好的對話在Spring之上的JSF 2.0的範圍實現。