Joh*_*ohn 1 forms jsf for-loop jstl primefaces
我有一个primefaces面板,我想在其中p:fileUploader为几个元素提供primefaces 。在运行期间,不清楚会有多少项目。这是我的代码:
<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>
Run Code Online (Sandbox Code Playgroud)
所以我的第一步是用 JSTL 的c:forEach. 这不起作用,因为 JSTL 在视图的构建期间运行,而 JSF 在视图组件树的渲染期间运行。
是否有可能在面板中实现 for 循环,或者是否有其他可能动态显示表单元素?
小智 5
您可以<ui:repeat>从 JSF facelets 中使用它xmlns:ui="http://java.sun.com/jsf/facelets"
<ui:repeat value="#{bean.testCurrent}" var="car"> ... </ui:repeat>
Run Code Online (Sandbox Code Playgroud)
例子:
https://www.mkyong.com/jsf2/jsf-2-repeat-tag-example/