0

30 個の属性を持つ Java オブジェクトがあります。データベースからオブジェクトを移入します。空でない値のみを表示したい。

<table>
    <col width="280"/><col width="130"/>

    <ui:repeat var="ud" value="#{TreeViewController.componentData}">

        <tr>
            <td>
                <h:outputText value="componentStatsId" rendered="#{ud.componentStatsId != 0}"/>
            </td>
            <td>
                <h:outputText value="#{ud.componentStatsId}" rendered="#{ud.componentStatsId != 0}"/>
            </td>
        </tr>

        .......... and 40 more table rows

    </ui:repeat>
</table>

値が空の場合にレンダリングされない行を含む単純な JSF テーブルを作成することをテストしました。しかし、値が空の場合、小さなスペースが得られることに気付きました。

ここに画像の説明を入力

どうすればこの問題を解決できますか?

4

1 に答える 1

3

はい、それはあなたのコードから予想される動作です。これは、コンポーネントのレンダリングを妨げているだけであり、コンポーネントのレンダリングを妨げてい<<h:outputText>ないためです。<tr><td>

これを解決するには、属性を使用しておよびレンダリングを使用<ui:fragment>および制御する必要があります。<tr><td>rendered

<ui:repeat var="ud" value="#{TreeViewController.componentData}">
    <ui:fragment rendered="#{ud.componentStatsId != 0}">
        <tr>
            <td>
                componentStatsId
            </td>
            <td>
                #{ud.componentStatsId}
            </td>
        </tr>
    </ui:fragment>
    <!-- .......... and 40 more table rows -->
    <ui:fragment rendered="#{ud.componentTypeId != 0}">
        <tr>
            <td>
                ...
            </td>
            <td>
                ...
            </td>
        </tr>
    </ui:fragment>
</ui:repeat>
于 2013-02-12T21:38:22.360 に答える