8.2. ネストされた対話


ネストされた対話は、既存の対話のスコープ内で @Begin(nested=true) とマークされたメソッドを呼び出すことにより作成されます。 ネストされた対話にはそれ自体の対話コンテキストがありますが、 外側の対話のコンテキストから値を読み取ることができます。外側の対話のコンテキストはネストされた対話内では読み取り専用ですが、オブジェクトは参照により取得されるため、オブジェクト自体への変更はその外側のコンテキストに反映されます。
  • 対話をネストするとオリジナルの対話または外側の対話のコンテキストに積み重ねられるコンテキストを初期化します。 外側の対話が親とみなされます。
  • ネストされた対話のコンテキストに直接設定されるまたはアウトジェクトされる値はすべて親となる対話のコンテキストでアクセス可能なオブジェクトに影響は与えません。
  • 対話コンテキストからのコンテキスト検索やインジェクションはまず現在の対話コンテキストにある値を検索します。値が見付からないと対話がネストされている場合はその対話スタックまで続きます。この動作は上書き可能です。
その後 @End が出てくると、 ネストされた対話は破棄されて外側の対話が開始し、 対話スタックを ポップ します。 対話は任意の深さにネストすることができます。
特定のユーザーアクティビティ (ワークスペース管理や戻るボタン) により、 内側の対話が終了する前に外側の対話が開始されることがあります。 この場合、 同じ外側の対話に属する同時のネストされた対話を複数持つことが可能です。ネストされた対話が終了する前に外側の対話が終了すると、 Seam はネストされた対話コンテキストを外側のコンテキストと共にすべて破棄します。
対話スタックの最下位にある対話がルートの対話です。 この対話を破棄すると派生した対話はすべて常に破棄されます。 @End(root=true) を指定すると宣言的にこれを行うことができます。
対話は 継続可能な状態 と考えることができます。 ネストされた対話により、 ユーザーの操作のさまざまなポイントにおいてアプリケーションは一貫した継続可能な状態を捕らえることができます。 これにより、 戻るボタンを押したときやワークスペースの管理に対して正しく動作するようにします。
前述した通り、 現在ネストされている対話の親となる対話にコンポーネントが存在する場合、このネストされている対話は同じインスタンスを使用します。ネストされるそれぞれの対話内に別々のインスタンスを持たせると、親となる対話のコンポーネントインスタンスがその子となる対話からは見えなくなるため、時には便利な場合があります。これを行うには、コンポーネントに @PerNestedConversation アノテーションを付けます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat