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>、XPages タグではなく HTML タグであるため、レンダリングを制御できません。

<xp:text>用ではなく 用の tagName プロパティがあることに気付きました<xp:link>。参照: http://xpagesblog.com/XPagesHome.nsf/Entry.xsp?documentId=4EB7314545EE0C19852578CB0066CE4C

繰り返しなどを使用せずにこれを管理する最も簡単な方法は何ですか?

4

5 に答える 5

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>

<ul>この場合、コードにまたはタグを追加する必要はありません<li>。ExtLib がそれを処理します。

于 2012-02-09T13:53:50.483 に答える
5

LI タグの代わりに、パネルを使用して tagName を "li" に設定します (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

過去に xp:span を使用したことがありますが、問題なく動作しました。

    <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 に答える