2

これはおそらく非常に単純な JSF の質問ですが、単純な答えが見つからないようです。

画像のリストがあり、それらを画像の表に表示したいと考えています。各画像はファイル名とともに表示されます。ui:repeat以下のようなタグを使用しています。要求どおりに 5 つの列が得られませんが、1 つしかありません。

<h:panelGrid id="resourcePanel" columns="5" rules="all">
    <ui:repeat var="res" value="#{resourceUpload.resources}">
        <h:panelGrid columns="1" rules="none">
                <h:graphicImage
                    value="/image/resource?id=#{res.idAsString}"
                    style="width:100px;" />
                <h:outputText value="#{res.name}" />
        </h:panelGrid>
    </ui:repeat>
</h:panelGrid>
4

2 に答える 2

2

出力は完全に期待どおりであり、指定されています。は<ui:repeat>レンダリング時間タグであり、 のようなビュー ビルド時間タグではありません<c:forEach>。ビューを構築した後、 のようにn 個のネストされたコンポーネントではなく<h:panelGrid>、1 つの子コンポーネント (<ui:repeat>それ自体) になります。<h:panelGrid><c:forEach>

<html ... xmlns:c="http://java.sun.com/jsp/jstl/core">
...
<h:panelGrid id="resourcePanel" columns="5" rules="all">
    <c:forEach var="res" items="#{resourceUpload.resources}">
        <h:panelGrid columns="1" rules="none">
            <h:graphicImage
                value="/image/resource?id=#{res.idAsString}"
                style="width:100px;" />
            <h:outputText value="#{res.name}" />
        </h:panelGrid>
    </c:forEach>
</h:panelGrid>

(これは 2.1.18 より古いバージョンの Mojarra に含まれていますが、次のような意味#{resourceUpload}があります。ビュー スコープの Bean にすることはできません。ビュー ステートの保存/復元で鶏卵の問題が発生するため、リクエスト スコープにする必要があります。 Mojarra 2.1.18 にアップグレードするには)

ちなみに、ネストさ<h:panelGrid>れたものはまったく意味がありません。ここを使えばよかっ<h:panelGroup>た。

以下も参照してください。

于 2012-11-28T12:41:28.080 に答える
2

<h:panelGrid>の中で別のものを使用するのはなぜ<ui:repeat>ですか?このような div を使用できます。
それ以外の

<h:panelGrid columns="1" rules="none">

使用する

<div style="display:inline-block;">

編集:


ではできないと思います<ui:repeat><c:forEach>代わりに使用してください。

まず、名前空間をインポートする必要があります

xmlns:c="http://java.sun.com/jstl/core"

<ui:repeat>を次のように置き換え<c:forEach>ます。

<c:forEach items="#{accountMastList.resultList}" var="res">
于 2012-11-28T03:54:21.120 に答える