在JSF中以表格格式显示图像列表

时间:2012-11-28 01:46:49

标签: image jsf repeat

这可能是一个非常简单的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>

2 个答案:

答案 0 :(得分: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">

答案 1 :(得分:2)

输出完全符合预期和指定。 <ui:repeat>是渲染时标记,而不是<c:forEach>之类的视图构建时标记。构建视图后,<h:panelGrid>最终会有1个子组件(<ui:repeat>本身),而不是 n 嵌套<h:panelGrid>组件,就像您使用{ {1}}。

<c:forEach>

(这在早于2.1.18的Mojarra版本中有<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> 的含义:它不能是视图范围的bean,它必须是由于鸡蛋问题而请求作用域在视图状态保存/恢复;您需要升级到Mojarra 2.1.18)

你的嵌套#{resourceUpload}使得没有任何意义。我在这里使用了<h:panelGrid>

另见: