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

时间:2014-09-12 18:26:49

标签: xpages

我正在使用扩展程序库中的导航器控件。我想使用默认样式,其中只突出显示所选项目,而不突出显示所有其他项目并显示指针光标。出于某种原因,它正在应用课程&#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>

enter image description here

更新: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>

3 个答案:

答案 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页底部确认了此问题,但未提供修复程序。即使我有这本书,希望这个可搜索的答案可以帮助其他人避免我经历过的麻烦。