你如何使用导航器的Selected属性?

时间:2012-03-10 05:48:32

标签: xpages

我花了好几天试图解决这个问题而且我放弃了。

我是一名LotusScript程序员,一直在努力学习XPages。我研究的所有示例和示例程序只涉及到这一部分。

有人可以一步一步地向我解释如何使用Extension Library Navigator控件的Selected属性吗?

我已根据扩展库中的布局控件创建了自己的自定义控件,并创建了一个名为navigationPath的自定义属性。我还创建了一个导航器自定义控件,它有5个页面链接节点。在每个页面链接节点的“选定”属性中,我放置了以下SSJS:

if(compositeData.navigationPath == "/Home/ApplicationPool"){
    return true
}else{
    return false
}

/ Home / ApplicationPool对应于我在特定页面链接节点的“Selection”属性中放入的值。

在每个布局自定义控件中,我将“navigationPath”属性设置为compositeData.navigationPath。

我错过了什么?

2 个答案:

答案 0 :(得分:5)

有一个selectedselection属性,它们意味着非常不同的东西,不能同时使用。在上面问题的代码示例中,您使用的是selected属性,在这种情况下是错误的。

导航器中的treeNodes应设置为使用selection属性,这是一个RegEx值,用于查看它是否与通过自定义属性传递到应用程序布局的值匹配。

<xe:navigator id="navigator1" expandable="true" expandEffect="wipe">
  <xe:this.treeNodes>
    <xe:pageTreeNode label="nodeName" page="/page.xsp" selection="/Home/ApplicationPool" />
  </xe:this.treeNodes>
</xe:navigator>

如您所见,您不需要使用任何SSJS来评估真/假结果。只需将treeNode中的值与XPage的applicationLayout控件中的值匹配即可。

如果你在布局titleBar中使用了标签,那么你可以设置一个选择属性,那里也使用格式/Home/.*,这将使每个XPage突出显示该标签,其中/Home/位于其开头。 navigationpath自定义属性。不要忘记它是RegEx,因此可以使用任何有效的RegEx语句为这个特定的属性增加更多的权力。

答案 1 :(得分:2)

对于导航器控件中的树节点,您可以定义要打开的xpage的名称,然后定义相关的选择。例如:

<xe:pageTreeNode page="/text.xsp" selection="/Home/Test" label="Test page">
</xe:pageTreeNode>

对于使用applicationLayout的各个xpages,您可以为navigationPath定义一个值。如果此值与naviagor控制的其中一个树节点中的条目匹配,则相应的菜单项将在浏览器中突出显示。定义navigationPath值的最佳方法是使用自定义属性(正如您所使用的那样)。这是一个例子:

<xe:applicationLayout id="applicationLayout1">
        <xe:this.configuration>
            <xe:oneuiApplication navigationPath="${javascript:compositeData.navigationPath}" ...

您可以在Extension Library Teamroom和Discussion模板中看到使用所有这些的示例。

根据我对如何使用它的解释,我可以看到你没有正确使用导航控件上的选择属性。您只需要为每个树节点定义一个唯一值(如果它与单个xpages上的navigationPath匹配,则将使用该值)。

因此,对于您的具体示例,请将您的选择属性更改为只返回:“/ Home / ApplicationPool”

相关问题