2014-09-12 42 views
0

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

我知道树节点的“selected”属性控制着这个。无论该属性设置为true,false还是无效,它都会执行相同的操作。我不想在这里做任何事情,只是使用默认行为。自定义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

UPDATE:这似乎是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> 

回答

1

如果我'右,所有节点被选择,因为所有的节点具有相同的页页=“/ xpSupervisor.xsp”为目标。 因此,如果页面xpSupervisor.xsp处于打开状态,导航器会将节点呈现为select。

+0

好的答案。这是真的,并使我调整了我的想法,最终导致我从使用PageTreeNode改变为BasicLeafNode。看到我的答案,我希望能帮助别人避免我所经历的事情。 – 2014-09-15 18:24:53

1

属性selected只是一个布尔值,表示pageTreeNode是否被选中。请致电selection。该属性与applicationLayout控件中的navigationPath一起使用。酒店selection可以采取正则表达式来确定选择状态。

+0

很好的答案,但我无法得到这个工作。 – 2014-09-15 18:22:42

0

尽管两个很好的答案哪去了我近,我不能让菜单使用pageTreeNode工作。解决方法是切换到使用basicLeafNode并使用submittedValue并在导航器的onItemClick事件中打开正确的页面。我还在'selected'属性中添加了代码来计算选择哪个菜单项。

我无法获得context.getSubmittedValue()方法在selected属性中工作。我通过将它设置为事件中的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页的底部确认了这一问题没有提供修复。即使我有这本书,希望这个可搜索的答案将帮助其他人避免我经历的麻烦。