显示在JSF表格式的图片列表(Display a list of images in a table

2019-08-03 06:29发布

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

Answer 1:

输出是完全预期和规定。 所述<ui:repeat>是一个渲染时间标签,而不是视图编译时间标签等<c:forEach> 建立视图后, <h:panelGrid> 1个组件(该结束了<ui:repeat>不具有n个嵌套本身) <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但是在蕴涵#{resourceUpload} :它不能是视图范围的bean,它必须是请求范围由于视图状态保存/恢复的鸡,鸡蛋的问题;你需要升级到2.1.18钻嘴鱼科)

您嵌套<h:panelGrid> ,使通过的方式没有绝对的意义。 我已经使用<h:panelGroup>在这里。

也可以看看:

  • JSTL在JSF2的Facelets ...有道理? - 了解“视图生成时”与“视图渲染时间”更好
  • 在JSF中动态创建表列 -另一个类似的问题


Answer 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">


文章来源: Display a list of images in a table format in JSF
标签: image jsf repeat