2

我有一个基于这个约定的传统菜单

<ul>
<li><xp:link>menu link 1</xp:menulink></li>
<li><xp:menulink>menu link 2</xp:menulink></li>
</ul>

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

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

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

4

5 回答 5

7

You can also wrap the entire <li>...</li> tag in an <xp:panel> tag that has a rendered script on it. Don't give the xp:panel an ID and no extra code is sent to the browser.

If you are using the Extlib or UP1 then you can also use the <xe:listcontainer> tag. It renders each direct child entry as a list item so you would end up with code similar to..

<xe:listcontainer>
  <xp:link> ... </xp:link>
  <xp:link rendered="renderscript"> ... </xp:link>
  <xp:link> ... </xp:link>
</xe:listcontainer>

In this case there is no need for you to add the <ul> or <li> tags in the code, the ExtLib will look after that for you.

于 2012-02-09T13:53:50.483 回答
5

Instead of the LI tag, use a panel and set the tagName to "li" (new since 8.5.3):

<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>
于 2012-02-09T14:01:16.137 回答
3

I have used xp:span in the past and it has worked fine.

    <xp:span>
       <xp:this.rendered><![CDATA[#{javascript:document1.isEditable()}]]></xp:this.rendered>
       <li>YOUR TEXT HERE</li>
    </xp:span>
于 2012-02-09T19:01:22.220 回答
1

这有效:

<ul>
    <li>Static item 1</li>
    <xp:text escape="false" id="computedField1" tagName="li" rendered="false">
        <xp:this.value><![CDATA[#{javascript:'<a href="http://XPages.info">menu link 2</a>'}]]></xp:this.value>
    </xp:text>
    <li>Static item 3</li>
</ul>

您当然可以计算 xp:text 上的渲染标签。

于 2012-02-09T12:54:25.407 回答
0

如果您不担心代码是否显示,您可以随时使用 ssjs 系统地更改 li 上的类

<ul>
<li class="#{javascript:return myclassname;}"><xp:link>menu link 1</xp:menulink></li>
<li><xp:menulink>menu link 2</xp:menulink></li>
</ul>
于 2012-02-09T13:52:18.250 回答