JSF、EJB、およびJPAでWebアプリケーションを作成する際に、イデオロギー的な問題が発生します。
状況の例は次のとおりです。
管理者は、ユーザーのリストをデータテーブルに表示します。次に、user1を選択すると、新しいユーザーエディションサイトに移動します。この問題は、2番目のカードまたはウィンドウを開いて、同じセッションで同時編集するuser2を選択しようとした場合に発生します。エディション後にuser1データを保存しようとすると、エンドポイントでuser2によって上書きされているため、保存できません。
データの保存:プロジェクトのビュー部分[下の図を参照]にデータを保存していないため、データを表示した後、マネージドBeanが破棄されています。したがって、コントローラーの部分では、現在選択されているユーザーをエンドポイント[ステートフルEJB Bean]のフィールドとして保持することにしました。これは、セッションスコープのマネージドBeanによって保持されるため、セッションに対して一定です。コレクションをエンドポイントまたはセッションスコープのマネージドBeanに保存しないでください。
問題:特定のケースは状況の概要です。このアプリケーションでは、セッション中に同じタイプの複数のエンティティを編集します。
質問:ユーザー/管理者の現在の選択をどこにどのように保存する必要がありますか。これにより、選択したエンティティのエディションが作成されます。
データをビューに保存し、リクエストスコープの部分を使用すると、同じセッションで複数のエンティティを制御できましたが、適切なアプローチではないと思います。ただし、これをコントローラーパーツに格納すると、同じセッションで編集される同じタイプの1つのエンティティが制限されます。
ここの図:http ://i.stack.imgur.com/9PyYr.jpg