我正在使用扩展程序库中的导航器控件。我想使用默认样式,其中只突出显示所选项目,而不突出显示所有其他项目并显示指针光标。出于某种原因,它正在应用课程&#34; lotusSelected&#34;到所有呈现为列表项<li>
的导航器节点。
我知道&#34;选择&#34;树节点的属性控制它。无论属性设置为true,false还是no,它都会执行相同的操作。我不是想在这里做任何事情,只是使用默认行为。自定义css或主题中没有任何内容可以覆盖它。
这种情况发生在所有浏览器上。使用Chrome工具我可以看到删除类会导致我想要的行为。导航打开XPage并更改动态内容控件,这一切都有效。这在应用程序布局控件中使用。
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex">
<xe:navigator id="navigator1" expandable="false">
<xe:this.treeNodes>
<xe:pageTreeNode label="Add New ATM"
page="/xpSupervisor.xsp" queryString="content=newATM">
</xe:pageTreeNode>
<xe:pageTreeNode label="Update ATM Information"
page="/xpSupervisor.xsp" queryString="content=updateATM"
selected="false">
</xe:pageTreeNode>
<xe:pageTreeNode label="One Time Settlement Amount Change"
page="/xpSupervisor.xsp" queryString="content=changeSettlementAmt"
selected="false">
</xe:pageTreeNode>
</xe:this.treeNodes>
</xe:navigator></xp:view>
更新:pageTreeNode与我创建动态内容控件的方式之间似乎有些冲突。它只会在那个Xpage上搞砸了。这是代码:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xe="http://www.ibm.com/xsp/coreex"
xmlns:xc="http://www.ibm.com/xsp/custom">
<xe:dynamicContent id="dynamicContent1" useHash="true"
defaultFacet="default">
<xp:this.facets>
<xc:ccSupervisorHelp xp:key="default"></xc:ccSupervisorHelp>
<xc:ccNewATM xp:key="newATM"></xc:ccNewATM>
<xc:ccUpdateATM xp:key="updateATM"></xc:ccUpdateATM>
<xc:ccChangeSettlementAmt xp:key="changeSettlementAmt"></xc:ccChangeSettlementAmt>
</xp:this.facets>
</xe:dynamicContent>
</xp:view>
答案 0 :(得分:1)
如果我是对的,则选择所有节点,因为所有节点都具有相同的页面页面=“/ xpSupervisor.xsp”作为目标。 因此,如果页面xpSupervisor.xsp已打开,则导航器将节点呈现为选择。
答案 1 :(得分:1)
属性selected
只是一个布尔值,表示是否选择了pageTreeNode
。
您应该查看属性selection
。此属性与applicationLayout控件中的navigationPath
一起使用。属性selection
可以使用正则表达式来确定选择状态。
答案 2 :(得分:0)
尽管有两个很好的答案让我更接近,但我无法使用 pageTreeNode 让菜单正常工作。修复方法是切换到使用 basicLeafNode 并使用submittedValue并在导航器的onItemClick事件中打开正确的页面。我还在'selected'属性中添加了代码来计算选择了哪个菜单项。
我无法让context.getSubmittedValue()方法在所选属性中工作。我通过在事件中将其设置为sessionScope var来克服这个问题。 (viewScope由于某种原因无效)
<xe:basicLeafNode label="Update ATM Information" submitValue="updateATM">
<xe:this.selected><![CDATA[#{javascript:if(sessionScope.menuValue == "updateATM"){
return true;
} else {
return false;
}}]]></xe:this.selected></xe:basicLeafNode>
这是onItemClick中打开正确链接的代码:
sessionScope.menuValue = context.getSubmittedValue();
if (sessionScope.menuValue == "newATM") {
context.redirectToPage("xpSupervisor.xsp?content=newATM");
} else...
“扩展程序库”一书的第244页底部确认了此问题,但未提供修复程序。即使我有这本书,希望这个可搜索的答案可以帮助其他人避免我经历过的麻烦。