这可能是一个非常简单的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>
输出是完全预期和规定。 所述<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中动态创建表列 -另一个类似的问题
为什么你使用其他<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">