2009-02-03 23 views
3

我們有以下的問題...JSF會話範圍豆,標籤式瀏覽

應用環境:

JSF,RichFaces的,A4J

請考慮以下情形:

  • 用戶登錄系統
  • 用戶導航到由包含a4j組件的a4j表單組成的新頁面,用戶填入表單但未提交。
  • 用戶打開一個新的標籤,並打開相同的URL,並與新的數據
  • 用戶返回到他的第一個選項卡上的新的表格並提交信息(注:所有的bean被定義爲會話範圍)

結果:

提交的信息是從所述第二標籤中的信息,但是從第一選項卡,其作爲豆被定義爲會話範圍只要預期提交。

問題:

我們需要得到一個請求範圍的行爲(即:應對新的標籤作爲一個新的請求,儘管該bean定義爲會話範圍)。

注:

當定義範圍豆作爲請求範圍從單個元件以相同的形式的部分Ajax響應,因爲它們尚未遞交復位其它組分。

有什麼建議嗎?

-

非常感謝

回答

2

這是Web應用程序的衆所周知的問題。

當然,你可以嘗試使用更多的自定義代碼 來解決這個問題,但我的快速建議是使用seam framework這正是解決這個問題。

Seam是JSF的一個超集,它爲 引入了一個新的conversation scope bean,它的功能完全符合您的需求。

Seam原生支持richfaces(都是JBoss/Redhat的項目),所以 你不應該期望集成有任何問題。

0

bean需要在會話範圍內的原因是什麼?

如果這只是爲了獲得ajax功能,那麼您可以更改bean請求並使用a4j:keepAlive標記。

a4j:keepAlive擴展了請求範圍bean的活動週期,然後您的bean實例就像是在會話範圍中爲ajax請求一樣。當用戶打開兩個相同的頁面時,他們使用兩個不同的bean實例。