0

ナビゲーション項目を動的に追加するという質問が漠然としすぎていることに気付いたので、質問を書き直しています。

xpages から xe:dominoViewEntriesTreeNode コントロールを発見しました。これを使用して、ビューのエントリに基づいてナビゲーター コントロールにナビゲーション アイテムを追加できると思います。

それを行う方法を説明するドキュメントやリソースの方法で非常に多くを見つけるのに苦労しています. 良いリファレンスやサンプルコードを教えてくれる人はいますか?

4

2 に答える 2

1

dominoViewListTreeNode を使用して、データベース内のビュー (これらのビュー内のドキュメントではなく) に基づいてメニューを作成できます。

xe:dominoViewListTreeNode を使用して、「Test*」というすべてのビューに基づいてメニューを動的に作成する例を次に示します (フィルター プロパティで正規表現を使用)。メニューからメニュー項目を選択すると、ビューの名前がサーバーに送信されます (viewEntry.getName() メソッドの EL 表記を使用)。

この例には、ビューの名前を送信された値として「キャッチ」し、これを sessionScope 変数に格納する onItemClick イベント ハンドラーも含まれています。次に、イベント ハンドラーは、表示するビューを制御するために sessionScope 変数を使用できる動的ビュー パネル コントロールを含むことができる views.xsp XPage にリダイレクトします。

sessionScope 変数は、選択したメニュー項目を「選択済み」としてマークするためにも使用されます。

<xe:navigator id="navigator1">
    <xe:this.treeNodes>
        <xe:dominoViewListTreeNode filter="Test.*" submitValue="#{viewEntry.name}" var="viewEntry">
            <xe:this.selected><![CDATA[#{javascript:viewEntry.getName() == sessionScope.clickedView}]]></xe:this.selected>
        </xe:dominoViewListTreeNode>
    </xe:this.treeNodes>

    <xp:eventHandler event="onItemClick" submit="true" refreshMode="complete">
         <xp:this.action>
           <![CDATA[#{javascript:sessionScope.clickedView = context.getSubmittedValue();
         context.redirectToPage("views.xsp");}]]>
         </xp:this.action>
    </xp:eventHandler>

</xe:navigator>

XPage にリダイレクトする onItemClick メソッドの代わりに、xe:dominoViewListTreeNode の href プロパティを計算して、XPage の名前を返すことができます。

この手法 (およびその他の手法) を紹介する「 XPages Extension Library - Create an app in 1 hour (almost) 」という短いプレゼンテーションがあります。

于 2013-03-01T18:58:22.040 に答える
1

あなたのページには、リンク テキストを含むいくつかのページへのリンクなど、ナビゲーション アイテムを含む領域があると思いますか? 次に、プロファイル ドキュメントなどからドキュメント アイテムの値を返す datasource/javascript ソースで繰り返しコントロールを使用します。リピート コントロールに興味がない場合は、これを読むことを検討してください: http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_repeat_controls このページには、プロファイル ドキュメントを扱うサンプルもあります。

ところで: プロファイル ドキュメントの使用は常に重要でした。そのため、代わりに「通常の」構成ドキュメントを使用することを検討してください。

于 2013-03-01T09:56:06.690 に答える