我意识到我的问题在动态添加导航项目时过于模糊,所以我正在重写这个问题。
我从xpages中发现了xe:dominoViewEntriesTreeNode控件。我想我可以使用它根据视图中的条目将导航项添加到导航器控件。
我很难找到破坏如何做到这一点的文档或资源。任何人都可以给我一个很好的参考或示例代码吗?
答案 0 :(得分:1)
我假设您的页面上有一个区域,其中包含导航项目,例如链接到一些带有链接文本的页面? 然后,我将使用带有数据源/ javascript源的重复控件,该源返回您的配置文件或其他内容中的文档项值。 如果您没有重复控制,那么您应该考虑阅读:http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_repeat_controls 在此页面上还有一个处理个人资料文档的示例。
顺便说一句:使用个人资料文件总是一个拐杖,所以请考虑使用“普通”配置文件。
答案 1 :(得分:1)
您可以使用dominoViewListTreeNode根据数据库中的视图构建菜单(而不是这些视图中的文档)。
以下是使用xe:dominoViewListTreeNode基于所有名为“Test *”的视图动态构建菜单的示例(在filter属性中使用regex)。从菜单中选择菜单项时,视图的名称将提交给服务器(对于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属性,而不是onItemClick方法重定向到XPage,以返回XPage的名称。
我有一个名为“XPages Extension Library - Create an app in 1 hour (almost)”的简短演示文稿,介绍了这种技术(以及其他技术)。