Xpages <;xe:navigator>;使用OneUI 2.1应用不正确的样式

Xpages <;xe:navigator>;使用OneUI 2.1应用不正确的样式,xpages,Xpages,我正在使用扩展库中的导航器控件。我想使用默认样式,其中只有选定的项目高亮显示,所有其他项目不高亮显示,并显示指针光标。出于某种原因,它将“lotusSelected”类应用于所有呈现为列表项的导航器节点 我知道树节点的“selected”属性控制着这一点。无论属性设置为true、false还是nothing,都会执行相同的操作。我不想在这里做任何花哨的事情,只是使用默认行为。自定义css或主题中没有任何内容可以覆盖此内容 这在所有浏览器上都会发生。使用Chrome工具,我可以看到删除类会导致我想

我正在使用扩展库中的导航器控件。我想使用默认样式,其中只有选定的项目高亮显示,所有其他项目不高亮显示,并显示指针光标。出于某种原因,它将“lotusSelected”类应用于所有呈现为列表项的导航器节点

我知道树节点的“selected”属性控制着这一点。无论属性设置为true、false还是nothing,都会执行相同的操作。我不想在这里做任何花哨的事情,只是使用默认行为。自定义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和我创建动态内容控件的方式之间似乎存在一些冲突。只有在那一页上才会搞砸。以下是代码:

<?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>

如果我是对的,则会选择所有节点,因为所有节点都具有与aim相同的page=“/xpSupervisor.xsp”。
因此,如果页面xpSupervisor.xsp处于打开状态,导航器将节点呈现为select。

属性
selected
只是一个布尔值,指示是否选择了
pageTreeNode


您应该查看属性
选择
。此属性与applicationLayout控件中的导航路径结合使用。属性
selection
可以使用正则表达式来确定选择状态。

尽管有两个很好的答案让我更接近,但我无法使用pageTreeNode使菜单工作。修复方法是切换到使用basicLeafNode,使用submittedValue并在导航器的onItemClick事件中打开正确的页面。我还在“selected”属性中添加了代码,以计算选择了哪个菜单项

我无法使context.getSubmittedValue()方法在所选属性中工作。我通过在事件中将其设置为sessionScope变量克服了这一问题。(由于某种原因,viewScope无法工作)


扩展库手册第244页的底部确认了此问题,但没有提供解决方案。即使我有这本书,希望这个可搜索的答案能帮助其他人避免我所经历的麻烦。

答案也不错。这是真的,并导致我调整我的想法,最终导致我从使用PageTreeNode改为使用BasicLeafNode。看看我的答案,我希望它能帮助其他人避免我所经历的一切。
<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>
sessionScope.menuValue = context.getSubmittedValue();

if (sessionScope.menuValue == "newATM") {
    context.redirectToPage("xpSupervisor.xsp?content=newATM");
} else...