X-Page でカテゴリとサブカテゴリの階層リストを生成しようとしています。これまでのところ、次の 2 つの方法を試しました。
最初の機能は、このブログ投稿のJesse Gallagher によるコードに基づいており、xe:outline コントロールを使用して、希望どおりの順序でリストを出力します。ただし、各エントリに追加機能とスタイリング (リンクの編集と削除など) を追加できるようにしたいのですが、アウトライン コントロール内でカスタム コントロールをレンダリングする方法がわかりません。
2番目の方法は、ネストされた繰り返しとカスタムコントロールを活用してリストを生成しようとしていますが、私の人生では、この作業をうまく行うことができず、それが機能しないためなのか、それとも単に根本的な何かが欠けています。XPage の基本的なコードは次のとおりです。
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:this.data>
<xp:dominoView var="Categories" viewName="vLUTopCat"></xp:dominoView>
</xp:this.data>
<xc:ccUI navigationPath="Admin/Main" pageName="Admin">
<xp:this.facets>
<xp:panel xp:key="facetMiddle">
<h2>Categories</h2>
<ul id="adminCatList">
<xp:repeat id="parentCat" rows="30" value="#{Categories}" var="DocCat" indexVar="catIdx" disableOutputTag="true">
<xc:ccCategoryList>
<xc:this.catID><![CDATA[#{javascript:DocCat.getColumnValue("docID")}]]></xc:this.catID>
<xc:this.catName><![CDATA[#{javascript:DocCat.getColumnValue("categoryName")}]]></xc:this.catName>
</xc:ccCategoryList>
</xp:repeat>
</ul>
</xp:panel>
</xp:this.facets>
</xc:ccUI>
カスタム コントロール (ccCategoryList) のコードは次のとおりです。
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom">
<xp:text escape="true" id="computedField1"
value="#{compositeData.catName}" tagName="li" />
<xp:repeat id="rptSubCat" rows="30" var="subCat"
disableOutputTag="true">
<xp:this.facets>
<xp:text disableTheme="true" xp:key="header"
escape="false">
<xp:this.value><![CDATA[<ul>]]></xp:this.value>
</xp:text>
<xp:text disableTheme="true" xp:key="footer"
escape="false">
<xp:this.value><![CDATA[</ul>]]></xp:this.value>
</xp:text>
</xp:this.facets>
<xp:this.value><![CDATA[#{javascript:var tview = database.getView("vLUSubCat");
var v = compositeData.catID;
var vc:NotesViewEntryCollection = null;
if (v != null) {
vc = tview.getAllEntriesByKey(v);
}
vc}]]></xp:this.value>
<xc:ccCategoryList>
<xc:this.catID><![CDATA[#{javascript:subCat.getColumnValues()[3]}]]></xc:this.catID>
<xc:this.catName><![CDATA[#{javascript:subCat.getColumnValues()[1]}]]></xc:this.catName>
</xc:ccCategoryList>
</xp:repeat>
</xp:view>
したがって、私の関連する質問は次のとおりです。
- Beanノードを使用してxe:outlineコントロールにカスタムコントロールを出力する方法はありますか?
- Bean ノードを使用する場合と同じように、繰り返しとカスタム コントロールを使用して、ビューからデータを再帰的に出力できますか?
- 私が見落としているより良い代替方法はありますか (たとえば、Bean で Java Collection を使用し、コントロールを繰り返しますか?)
ありがとう