2

これは可能なはずですが...?

richfaces と JSF を使用して、rich:dataList を使用して List を反復処理しています...各反復を選択的に「レンダリング」する機能が必要な場合を除いて、すべて問題ありませんが、それは可能ですか?

例えば:

<rich:dataList value="#{list}" var="item">
   <h:outputText value="#{item.something}" />
</rich:dataList>

たとえば、「アイテム」の一部のプロパティが true の場合など、出力を選択的にレンダリングできるようにしたいと考えています。

などでラップしようとしましoutputTextoutputPanelが、出力パネルがレンダリングされない場合<li>、反復の ' ' がまだレンダリングされるため、アイテムを完全にスキップするだけでなく、横に何もない箇条書きが表示されます:(

これを解決する方法はありますか、それとも私はSOLですか?通常、表示するアイテムのリストを事前に準備したいことはわかっていますが、多くの理由から、ここで繰り返すことはできません。

4

2 に答える 2

1

奇妙な振る舞い。トマホーク で再現しようとしましたt:dataListが、まったく同じ動作が見られます! あなたができる最善のことは、それを置き換えて、a4j:repeatプレーンな HTML<li>要素を手動でレンダリングすることです。何かのようなもの:

<ul class="rich-datalist">
    <a4j:repeat value="#{list}" var="item">
        <h:panelGroup rendered="#{item.somecondition}">
            <li class="rich-list-item">
                <h:outputText value="#{item.something}" />
            </li>
        </h:panelGroup>
    </a4j:repeat>
</ul>

(スキンを保持するために、ここでrich:dataList説明されているのと同じクラス名を借用しました)

ただし、個人的には、これをバグまたは少なくとも望ましくない動作としてマークし、問題のコンポーネント ライブラリの背後にいる少年たちに報告します。私はすでにトマホークのためにそれをやった.

于 2010-02-01T18:14:48.510 に答える
0

単純。render 属性を h:outputText タグに追加します。

<rich:dataList value="#{list}" var="item">
    <h:outputText value="#{item.something}" rendered="#{item.isDisplayed}"/>
</rich:dataList>
于 2015-05-19T15:16:05.797 に答える