我有一个primefaces面板,我想为几个元素提供primefaces'p:fileUploader
。在运行期间,不清楚,将有多少项。这是我的代码:
<h:form>
<p:panel id="grid" header="">
<h:panelGrid columns="2" cellpadding="5">
<c:forEach items="${bean.testCurrent}"
var="car" varStatus="i">
<p:outputLabel value="#{car.name}: " for="image${i.index}" />
<p:column>
<p:fileUpload id="image${i.index}"
fileUploadListener="#{bean.uploadImage}"
mode="advanced" dragDropSupport="true" multiple="false"
update="messages" sizeLimit="1000000"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
oncomplete="disableChoosing()"/>
<p:growl id="growl" showDetail="true" />
</p:column>
</c:forEach>
</h:panelGrid>
<p:commandButtonaction="#{bean.save()}" value="Save" />
<p:commandButton action="#{bean.cancel()}" value="Cancel" />
</p:panel>
</h:form>
所以我的第一步是用JSTL的c:forEach
来尝试。这不起作用,因为JSTL在视图的构建时运行,而JSF在视图组件树的渲染时间内运行。
是否有可能在面板中实现for循环,还是有其他动态显示表单元素的可能性?
答案 0 :(得分:2)
您可以使用<ui:repeat>
来获取JSF facelets xmlns:ui="http://java.sun.com/jsf/facelets"
<ui:repeat value="#{bean.testCurrent}" var="car"> ... </ui:repeat>
示例:
答案 1 :(得分:1)
由于您使用primefaces
,请查看p:repeat
。这可以从5.3.5及更高版本获得。
看看他们的example。