-1

私が欲しいものは以下に実装されています.3つのページがあります.

userList.xhtml : dataTable にユーザーのリストが含まれます。ユーザーをクリックすると、次のページ (detailsOfUser.xhtml) にそれぞれのユーザーの詳細が表示されます。

detailsOfUser.xhtml : このページには、上記のページでクリックされたユーザーの詳細が表示されます。このページにはEditボタンがあり、クリックすると次のページのテキストフィールドに同じ値が表示されます (editUserDetails.xhtml)

editUserDetails.xhtml : 前のページのユーザーの詳細を含むテキスト フィールド。このページにはSaveボタンがあり、クリックするとdetailsOfUser.xhtml、それぞれのユーザーが値を更新したことがわかる場所にリダイレクトされます。

それらの Bean に Bean とスコープをどのように使用すればよいですか?

3 つのページすべてに 1 つの Bean を使用する必要がありますか?それとも、スコープが異なる 3 つの Bean を使用する必要がありますか?

4

3 に答える 3

1

userList.xhtml に対して 1 つの Bean (おそらく ViewScope) を作成します。アプリケーションが小さく、単純さが好きな場合は、この SessionScope を作成することも検討できます。

detailsOfUser.xhtmleditUserDetails.xhtmlについては、別の Bean を使用します。これは ConversationScoped にする必要があります。または、MyFaces CODIを使用するオプションがある場合(これを強くお勧めします)、自動 Conversation スコープのような ViewAccessScope をそれらに与えることができます。

これにより、簡単かつ正確な方法でそれを書くことができます。detailsOfUser.xhtmleditUserDetails.xhtmlの間で情報を共有していることを理解しています。

追加情報 - ViewScope には問題があり、動作させるにはとにかくSeamまたはMyFaces CODIが必要になる場合があります。

于 2013-02-28T13:03:10.840 に答える
0

長時間データを必要としないため、Viewscope または Requestscope を使用することをお勧めします。単一の xhtml-Files を表示して渡すためだけに必要です。
したがって、Viewscope を備えた 1 つの Bean を使用したいと思います。

于 2013-02-28T13:02:27.043 に答える
0

UserListBeanRequestScoped または ViewScoped (CDI では ConversationalScoped) にすることができ、テーブルに対して何らかの操作を実行するかどうかによって異なります (つまり、並べ替え、フィルタリングなど)。

UserDetailBean詳細を表示するだけでよいため、RequestScoped になります。

EditUserDetailBeanリクエスト中にデータを維持する必要がないため、再び RequestScoped です

または、1 つの SessionScoped Bean を作成してそこにすべてを配置することもできますが、これはあまりお勧めしません。セッションが大きくなりすぎないようにする必要があります。

より一般的に言えば、リクエスト中にデータを維持する必要がないページのリクエストスコープ、ページで何が起こっているかに関するデータを保存する必要があるときのビュースコープ(データテーブルのフィルタリングなど)、セッション全体を保存するためのセッションスコープログに記録されたユーザーやショッピング カートなどのデータ、最後にアプリケーション全体のものを格納するための Application スコープ (構成など、Singleton Bean として機能します)。

また、BalusC のこの記事も参照してください。

于 2013-02-28T13:03:04.490 に答える