我正在迁移一段看起来像这样的遗留代码:
<c:forEach items="#{sel}" var="crit" end="12">
<tr>
<td class="criteriaName">
<c:set var="tip" value="#{Factory.makeTooltip(crit.string)}" />
<c:if test="#{0 != fn:length(tip)}">
<a:outputPanel layout="block">
<h:outputText value="#{crit.kriterium}" styleClass="tooltipAvailable"/>
<rich:tooltip layout="block">
<h:outputText escape="false" value="#{tip}" />
</rich:tooltip>
</a:outputPanel>
</c:if>
<c:if test="#{0 == fn:length(tip)}">
<h:outputText value="#{crit.kriterium}" />
</c:if>
</td>
</tr>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
现在我正在寻找替换<c:if>并<c:forEach>与他们<ui:fragment>和<ui:repeat>同行.问题是,我需要迭代sel两次:一次从0到12再从13到结束.
我没有找到一种方法来分割列表迭代,就像endforeach标记的属性一样.我真的想避免在后端拆分列表,因为这是一个纯粹的视图问题,应该在那里处理.
所以问题是:我可以按照指定的方式替换上面的片段吗?有哪些替代方案?
如果您使用的是EL 2.2,则可以调用普通的java方法.
假设这sel是一个List,你可以使用
<ui:repeat var="crit" value="#{sel.subList(0,12)}">
Run Code Online (Sandbox Code Playgroud)
不是,ui:repeat并且c:forEach不总是可以互换,所以请确保您的用例有效.
| 归档时间: |
|
| 查看次数: |
820 次 |
| 最近记录: |