独自のコンポーネントを作成するときに、拡張ライブラリコンポーネントにすでに含まれている動作を厳密に複製する場合は、そのコンポーネントを拡張し、さまざまな機能に対応するために必要なものを追加することを強くお勧めします。これにより、作業がはるかに簡単になり、コンポーネントが配置される可能性のあるすべての小さなシナリオをコーディングする必要がなくなります。
ただし、拡張ライブラリやコアコンポーネントのようなものではないコンポーネントを開発している場合は、コンポーネントがUIComponentまたはUIComponentBaseを拡張していることを確認してください。このルートを使用する場合は、レンダラーを拡張する独自のレンダラーも作成する必要があります。これは、コンポーネントの画面上の表現を構築するものです。繰り返しになりますが、コアコンポーネントまたは拡張ライブラリコンポーネントに必要なものを厳密に模倣するものがすでにある場合は、レンダラーにそのレンダラーを拡張させます。また、faces-configファイルにレンダラー定義を含め、xsp-configファイルにコンポーネント定義を含めることを忘れないでください。そうしないと、コンポーネントが機能しません。
extlibからコントロールを開始することに関しては、実行時にページにコントロールを挿入できるということだと思います。もしそうなら、答えは絶対にイエスです。IDが「someContainer」のコンテナ(つまり、panel、div、spanなど)があるページに入力テキストフィールドを追加するには
XspInputText input = new XspInputText();
input.setValue("someValue");
input.setId("someID");
UIComponent container = FacesContext.getCurrentInstance().getViewRoot().findComponent("someContainer");
container.getChildren().add(input);
すべてのコアおよび拡張ライブラリコンポーネントのAPIを確認するには、XPagesControlsDocumentationを参照してください。独自のコンポーネントを作成するためのより完全なチュートリアルについては、nsf内にカスタムコンポーネントを作成するための私のブログを参照してください。手順は、ライブラリに配置する場合とほとんど同じです。
パート1、
パート2、サンプルデータベースがあります。パート2の投稿で。