【发布时间】:2015-09-03 12:26:48
【问题描述】:
我们都知道构建时间和渲染时间之间的区别。将<ui:include> 标签(构建时间)放在<ui:repeat>(渲染时间)中绝对不是一个好主意,但是相反的做法可以吗?我们可以在<ui:include> 中使用<ui:repeat> 吗?
【问题讨论】:
标签: jsf facelets uirepeat uiinclude
我们都知道构建时间和渲染时间之间的区别。将<ui:include> 标签(构建时间)放在<ui:repeat>(渲染时间)中绝对不是一个好主意,但是相反的做法可以吗?我们可以在<ui:include> 中使用<ui:repeat> 吗?
【问题讨论】:
标签: jsf facelets uirepeat uiinclude
两种方式都可以。
将
<ui:include>标签(构建时间)放在<ui:repeat>(渲染时间)中绝对不是一个好主意
这不是真的。您可以安全地这样做。唯一的限制是您不能在src 的<ui:include> 内部使用<ui:repeat> 的var。换句话说,以下方法将行不通:
<ui:repeat value="#{bean.items}" var="item">
<ui:include src="/WEB-INF/includes/#{item.foo}.xhtml" />
</ui:repeat>
这仅在您将 <ui:repeat> 替换为 <c:forEach> 时有效。
但如果你不这样做,例如
<ui:repeat value="#{bean.items}" var="item">
<ui:include src="/WEB-INF/includes/foo.xhtml">
<ui:param name="foo" value="#{item.foo}" />
</ui:include>
</ui:repeat>
那么就没有问题了。一切都会好起来的。
但是相反的做法可以吗?我们可以在
<ui:include>中使用<ui:repeat>吗?
您也可以安全地这样做。如果遇到问题,只需按右上角的“”按钮即可。
【讨论】: