8.11. 対話型コンポーネントと JSF コンポーネントのバインディング


対話型コンポーネントには、JSF コンポーネントへのバインディングの保持には使用できないという小さな制限があります (一般的には、 アプリケーションロジックからビューに強い依存関係を作成するため、必ず必要でない限りこの JSF の機能は使用しないことが一般的に推奨されます)。ポストバック要求では、 Seam 対話コンテキストが復元される前、ビュー復元フェーズ中にコンポーネントのバインディングが更新されます。
これに対処するには、 イベントスコープのコンポーネントを使ってコンポーネントバインディングを格納し、必要とする対話スコープのコンポーネントにそれをインジェクトします。
@Name("grid") 
@Scope(ScopeType.EVENT) 
public class Grid { 
    private HtmlPanelGrid htmlPanelGrid; // getters and setters 
    ... 
}
Copy to Clipboard Toggle word wrap
@Name("gridEditor") 
@Scope(ScopeType.CONVERSATION) 
public class GridEditor { 
    @In(required=false) 
    private Grid grid; 
    ... 
}
Copy to Clipboard Toggle word wrap
また別の制限として、対話スコープのコンポーネントをバインドされた JSF コントロールでイベントスコープのコンポーネントにインジェクトできない点があります。これには facesMessages のような Seam の組み込みコンポーネントが含まれます。
暗黙の uiComponent ハンドルで JSF コンポーネントツリーにアクセスすることもできます。 次の例では反復中にデータテーブルを支える UIData コンポーネントの getRowIndex() にアクセスし、 現在の行番号を表示します。
<h:dataTable id="lineItemTable" var="lineItem" 
   value="#{orderHome.lineItems}"> 
  <h:column> 
    Row: #{uiComponent[&#39;lineItemTable&#39;].rowIndex} 
  </h:column> 
  ... 
</h:dataTable>
Copy to Clipboard Toggle word wrap
このマップでは、JSF UI のコンポーネントはクライアント識別子で使用可能です。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat