明確に定義されたインターフェースを持つアプリケーションがあります。モジュールの解決に CDI を使用し (具体的には、API インターフェイスで Instance<> 注入ポイントを使用してモジュールを解決します)、インターフェイスを介してさまざまなデータを問題なくやり取りします。私は意図的に API と実装を分離し、密結合を避けるためにモジュールは API からのみ継承し、アプリケーションは実行時の依存関係と API を介して行われるデータの受け渡しを通じてのみモジュールを認識します。アプリケーションは、jar を WEB-INF/lib フォルダーにドロップしてアプリ サーバーを再起動するだけで追加できるモジュールがなくても正常に動作します。
私が問題に直面しているのは、モジュールにビューの一部を作成させたいということです。そのため、ポータブルな方法で JSF コンポーネントを呼び出すか、モジュールからインクルードを実行して、それを取得します。そのビューをレンダリングします。呼び出したいモジュールは既に解決しており、モジュールのインターフェースへの参照が用意されています。私が最初に考えた方法は、モジュールにビュー テンプレートの場所を提供するように要求する ui:include を実行することでしたが、ビューの解決はアプリケーションから行われるため、意味のある方法でそのクエリに答える方法がわかりません。ライブラリルートではなく、ルート。
エグゼクティブ サマリーは、.xhtml (テンプレート/コンポーネント) ファイルに JSF を使用して、アプリケーションからライブラリへのギャップをジャンプする方法がわからないということです。
CC を使用するのはよいことですが、実行時に特定の CC インスタンスが必要であることをページにハード コードするのではなく、どのように指定すればよいでしょうか?
もちろん、アプリケーション コードを直接呼び出してマークアップを要求することもできますが、これは非常に強引な方法のように思えます。また、マークアップを取得すると、それを評価するように JSF に指示する方法が正確にはわかりません。とはいえ、リソース パスを取得し、マークアップを取得して評価し、完成したマークアップを返すコンポーネントを想像することはできますが、それを実装する方法がわかりません。
可能であれば、モジュール開発者に負荷の高い UIComponent アプローチを強制することは避けたいと思います。つまり、動的な方法で ui:include (または同等のもの) を実行するか、動的な方法で CC を呼び出します。(モジュール開発者の生活を楽にするために必要な場合は、アプリケーションでUIComponentアプローチを一度コーディングしてもかまいません)
これを理解するためにどこを見るべきかについての提案はありますか? (最初に見つけたら、ここに答えを投稿します)