2

いくつかの条件に基づいて、XPage にカスタム コントロールを含めようとしています。これらの条件は、特定のユーザー選択フィールドによって異なります。そのため、ユーザーが選択を変更すると、カスタム コントロール名を入力し、それを XPage に含めようとします。について読みましたが、ページの読み込み中に特定のページを読み込み、動的に読み込むことができません。

サンプルコードスニペット:

<xp:button id="button3" value="Change Page to Include CC 2">
    <xp:eventHandler event="onclick" submit="true"
        refreshMode="partial" disableValidators="true" refreshId="pnlRefresh">
        <xp:this.action><![CDATA[#{javascript:sessionScope.ccPageName = "content_CC2"}]]></xp:this.action>
    </xp:eventHandler>
</xp:button>
<xp:panel id="pnlRefresh">
    <xp:include>
        <xp:this.pageName><![CDATA[${javascript:sessionScope.ccPageName + ".xsp";}]]> </xp:this.pageName>
    </xp:include>
</xp:panel>

この要件を達成する可能性はありますか? または、JAVA を使用して XPage コードにページを動的に挿入するにはどうすればよいでしょうか?

必要なすべてのカスタム コントロール (ハードコード) を含める必要があるため、ExtLib のダイナミック コンテンツ コントロールまたはスイッチ コントロールを使用したくありません。

私を助けてください。

4

1 に答える 1

1

あなたが望むものを達成するための2つの方法があります:

  1. 動的コンテンツコントロールを使用する-それを機能させるためにすべてのコントロールを含める必要があるというのは真実ではありません-このコントロールのコンテンツを簡単に再構築できるハックがあります(nullパラメーターを使用してshowメソッドを呼び出す)、これは例です: http: //pastebin.com/VEDAjdDJ

  2. カスタムコントロールビルダーを使用して、Javaからコントロールを構築します。この例は、拡張ライブラリーのソースコード(クラスcom.ibm.xsp.extlib.builder.ControlBuilder)にあります。これは最初の方法よりも少し難しいので、ダイナミックコンテンツコントロールを使用することをお勧めします!

コントロールのコンテンツを再構築した後、保存されていないコントロールに保持されているすべてのデータが失われることを忘れないでください!この問題を処理する最善の方法は、マネージドBeanを使用してデータをUIコントロールから遠ざけることです。

于 2013-02-13T08:58:47.080 に答える