8.3. GET 要求を使った対話の開始


ページが Faces でない要求 (HTTP GET 要求など) 経由でアクセスされる場合、 JSF はトリガされるアクションリスナーを定義しません。これはユーザーがページをブックマークする、または <h:outputLink> からそのページに移動する場合に発生します。
ページがアクセスされたら直ちに対話を開始したい場合があります。 JSF アクションメソッドがないため、アクションに @Begin アノテーションを付けることはできません。
このページが状態をコンテキスト変数にフェッチする必要がある場合、 さらなる問題が発生します。 すでに、この問題を解決する 2 つの方法を見てきました。 Seam コンポーネントにその状態が保持される場合、 @Create メソッドでその状態をフェッチできます。 状態が保持されていなければ、 コンテキスト変数に対して @Factory メソッドを定義することができます。
いずれの方法もうまくいかない場合、 Seam では pages.xml ファイルに ページアクション を定義することができます。
<pages> 
  <page view-id="/messageList.jsp" action="#{messageManager.list}"/>
  ... 
</pages>
Copy to Clipboard Toggle word wrap
レスポンス出力フェーズの始め、つまりページのレンダリング開始直前にこのアクションメソッドが呼び出されます。 ページアクションが null 以外の結果を返す場合、 Seam は適切な JSF および Seam ナビゲーションルールを処理するため、 まったく異なるページがレンダリングされることがあります。
ページのレンダリング前にしたいことが対話の開始 だけ の場合、組み込みアクションメソッドを次のように使用できます。
<pages> 
  <page view-id="/messageList.jsp" action="#{conversation.begin}"/> 
  ... 
</pages>
Copy to Clipboard Toggle word wrap
また、 この組み込みアクションは JSF コントロールから呼び出すこともでき、 同様に #{conversation.end} を使って対話を終了します。
以下のように既存の対話への参加、 ネストした対話やページフロー、 アトミックな対話の開始などの制御に <begin-conversation> エレメントを使用することができます。
<pages> 
  <page view-id="/messageList.jsp"> 
    <begin-conversation nested="true" pageflow="AddItem"/> 
  <page> 
  ... 
</pages>
Copy to Clipboard Toggle word wrap
また、 <end-conversation> エレメントもあります。
<pages> 
  <page view-id="/home.jsp"> 
    <end-conversation/> 
  <page> 
  ...
</pages>
Copy to Clipboard Toggle word wrap
これでページがアクセスされた直後に対話を開始できるオプションは 5 種類になりました。
  • @Create メソッドに @Begin アノテーションを追加する
  • @Factory メソッドに @Begin アノテーションを追加する
  • Seam ページアクションメソッドに @Begin アノテーションを追加する
  • pages.xml<begin-conversation> を使用する
  • #{conversation.begin} を Seam ページアクションメソッドとして使用する
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat