0

我意识到我的问题在动态添加导航项方面过于模糊,所以我正在重写这个问题。

我从 xpages 中发现了 xe:dominoViewEntriesTreeNode 控件。我想我可以使用它根据视图中的条目将导航项添加到导航器控件。

我正在努力寻找分解如何做到这一点的文档或资源。任何人都可以给我一个很好的参考或示例代码吗?

4

2 回答 2

1

我假设您的页面上有一个带有导航项的区域,例如指向带有链接文本的某些页面的链接?然后,我将使用带有数据源/javascript 源的重复控件,该源从您的配置文件文档或其他内容中返回文档项值。如果您不喜欢重复控制,那么您应该考虑阅读以下内容:http: //xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_repeat_controls 在此页面上还有一个处理配置文件的示例。

顺便说一句:使用配置文件总是一个拐杖,所以请考虑使用“普通”配置文件。

于 2013-03-01T09:56:06.690 回答
1

您可以使用 dominoViewListTreeNode 基于数据库中的视图(而不是这些视图中的文档)构建菜单。

这是一个使用 xe:dominoViewListTreeNode 动态构建基于所有视图的菜单的示例,称为“Test*”(在过滤器属性中使用正则表达式)。当从菜单中选择一个菜单项时,视图的名称被提交给服务器(viewEntry.getName() 方法使用 EL 表示法)。

该示例还包含一个 onItemClick 事件处理程序,它“捕获”视图的名称作为提交的值并将其存储在 sessionScope 变量中。然后事件处理程序重定向到可以包含动态视图面板控件的 views.xsp XPage,您可以在其中使用 sessionScope 变量来控制要显示的视图。

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>

您可以计算 xe:dominoViewListTreeNode 的 href 属性来返回 XPage 的名称,而不是使用 onItemClick 方法重定向到 XPage。

我有一个名为“ XPages Extension Library - Create an app in 1 hours (almost) ”的简短演示文稿,介绍了这种技术(和其他技术)。

于 2013-03-01T18:58:22.040 回答