0

ユーザーのリストを使用する3つの異なるページがあります。

最初のページには、1つのセッションスコープ管理対象Beanのユーザーを含むdataTableが含まれています。そのページで、選択したユーザーの詳細を変更できます。

2番目のページにもユーザーのdataTableが含まれていますが、セッションスコープBeanが異なります。このページでは、dataTable(ユーザーのリスト)とデータベースからもユーザーを削除します。

1人のユーザーに変更を加えた場合、その変更はユーザーを削除したページに表示されないため、これは良い考えではないことに気付きました。

ユーザーのリストのみを含むアプリケーションスコープBeanはソリューションですか?

4

1 に答える 1

1

ユーザーのリストのみを含むアプリケーションスコープBeanはソリューションですか?

いいえ、それはあなたが直面している問題を解決しません。Webアプリケーションは通常マルチユーザー環境であり、synchronized厄介なものなどを防ぐためにすべてを作成する必要があるため、結局のところ同時実行の問題に遭遇しますConcurrentModificationException。つまり、アプリケーションスコープのBeanは、Webアプリケーションのすべてのユーザー間で共有されます。セッションスコープが広すぎる場合でも、アプリケーションスコープのBeanにリクエスト/ビュースコープのデータを保持することは意味がありません。

したがって、問題は、セッションスコープが広すぎることです。新しいGETリクエストごとにリストを更新したいとします。これを実現するための最善の方法は、Beanをリクエストに入れるか、より適切にはスコープを表示することです。ユーザーの詳細を編集するBeanは別のものである可能性がありますが、編集ページをブックマーク可能なGETリクエストにしたくない場合は、これを最初のBeanのプロパティにすることも簡単にできます。

参照:

于 2011-08-22T21:51:15.677 に答える