0

これは、実用的な含意を伴う、より理論的な問題です。

ユーザーが人を検索できるページがあります。検索の結果、検索条件に一致する人物のリストが表示されます。すべてのレコード (すべての人) の横に、ユーザーが知りたい人に関する詳細が記載された別のページに移動するリンクがあります。

ここまでは順調ですね。私のジレンマ 実際の状況では、ユーザーが同時に複数の人をチェックしたい場合があります。JSF Request Beans を使用せずに実装する方法がわかりません。状況は次のとおりです。

  1. ユーザーがクリックして (実際には「リンクを別のタブで開く」を右クリックします)、ユーザーの詳細を表示します 1
  2. ユーザーはクリックして別の人の詳細を表示します 2.
  3. ユーザーは個人 1 を変更します
  4. ユーザーは人 2 を変更します。
  5. ユーザーは person1-detail ページに戻り、再度変更を行います

ViewScoped Beans でサポートされている person Details を使用してページを実装することは可能ですか? もしそうなら、検索結果ページから個人詳細ページに移動するリクエストはポストリクエストにするべきですか? 他の回避策はありますか? フラッシュスコープ ? 会話?

4

1 に答える 1

0

リストを保持し@ViewScopedて人をクリックできるようにし、リンクをクリックした場合に詳細を表示するために素敵なオーバーレイ コンポーネントを使用します。最も人気のあるフレームワークである PrimeFaces には、他のフレームワークと同様に、いくつかのオプションが必要です。ユーザーがそのようにロールしたい場合は、target = _blank で開くためのボタン/リンクを含めます。

詳細を含む新しいウィンドウをサポートする Bean は、@RequestScopedインジェクションを使用して正しい人のインスタンスを取得できます。もちろん、これにはクリックされたものを保存する必要があります。つまりPerson selectedPerson;、その人にインデックスをリクエスト パラメータとして追加し、getPersons.get(selectedPerson); を使用することもできます。

2 番目の解決策を検討する場合は、What can <f:metadata>, <f:viewParam> and <f:viewAction> be used for?を確認してください。`

また、CDI の使用を検討してください。Deltaspike からの 4 番目のリリースで、まもなくリリースされ、いくつかの優れたスコープが提供されます。たとえば、これらの新しいウィンドウのそれぞれで個別の状態を追跡したい場合は@WindowScoped便利です。

幸運を

于 2013-05-16T16:40:32.003 に答える