如何在XPage中隐藏带有<li>标签的菜单项

Sea*_*ull 2 xpages

我有一个基于这个惯例的传统菜单

<ul>
<li><xp:link>menu link 1</xp:menulink></li>
<li><xp:menulink>menu link 2</xp:menulink></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想根据某些逻辑有选择地渲染菜单链接2.我可以渲染<xp:link>罚款,但由于它<li>是HTML标记而不是XPages标记,因此无法控制渲染.

我注意到有一个tagName属性<xp:text>但不是for <xp:link>.请参阅:http://xpagesblog.com/XPagesHome.nsf/Entry.xsp?documentId=4EB7314545EE0C19852578CB0066CE4C

在不使用重复等的情况下管理它的最简单方法是什么?

Dec*_*nch 7

您还可以将整个<li>...</li>标记包装在其<xp:panel>上具有呈现脚本的标记中.不要给xp:panel一个ID,也不会向浏览器发送额外的代码.

如果您使用的是Extlib或UP1,那么您也可以使用该<xe:listcontainer>标签.它将每个直接子项作为列表项呈现,因此您最终会得到类似于...的代码.

<xe:listcontainer>
  <xp:link> ... </xp:link>
  <xp:link rendered="renderscript"> ... </xp:link>
  <xp:link> ... </xp:link>
</xe:listcontainer>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您无需在代码中添加<ul><li>标记,ExtLib将为您照顾.


Thi*_*sen 5

使用面板并将tagName设置为"li"(自8.5.3开始以来),而不是LI标记:

<ul>
    <li>
        <xp:link>menu link 1</xp:link>
    </li>
    <xp:panel
        rendered="#{test == true}"
        tagName="li">
        <xp:link>menu link 2</xp:link>
    </xp:panel>
</ul>
Run Code Online (Sandbox Code Playgroud)