Java JSF2UI:repeat:在一个div中每n个项目分组一次
给定我想在如下页面上排列的集合:Java JSF2UI:repeat:在一个div中每n个项目分组一次,java,jsf,jsf-2,uirepeat,Java,Jsf,Jsf 2,Uirepeat,给定我想在如下页面上排列的集合: 在ui中是否有某种技巧可以用来实现这一点:重复或通过其他技术,最好不是创建自定义组件?您可以通过varStatus属性检查当前循环,并在必要时打印中间体 例如,每3项: #{item} 请注意,不可能将其包装为中的纯HTML,因为这将导致非良好格式的XML,因此将其作为XML实体 更新根据评论,这里有一种替代方法,只定义一次s,这可能不太容易混淆: #{item} 如果可能,我会在服务器端中断收集: <ui:repeat value="#{gr
在ui中是否有某种技巧可以用来实现这一点:重复或通过其他技术,最好不是创建自定义组件?您可以通过
varStatus
属性检查当前循环,并在必要时打印中间体
例如,每3项:
#{item}
请注意,不可能将其包装为
中的纯HTML,因为这将导致非良好格式的XML,因此
将其作为XML实体
更新根据评论,这里有一种替代方法,只定义一次
s,这可能不太容易混淆:
#{item}
如果可能,我会在服务器端中断收集:
<ui:repeat value="#{groups}" var="group">
<div style="float:left;">
<ui:repeat value="#{group.items}" var="item">
<div>#{item.content}</div>
</ui:repeat>
</div>
</ui:repeat>
#{item.content}
另一种选择可能是(尚未测试,尤其不确定尺寸行为):
#{item.content}
编辑:您的第一个解决方案的第二个版本已被替换为+1,因为这会起作用,几分钟前我想到了类似的东西。我的计划是使用自定义函数来应用分组。不过,我不确定你的第二个解决方案是否有效。至少,任何IDE都会讨厌它,后者只能在JSP中工作,不能在Facelets中工作,因为它在语法上是无效的XML。但是在JSP中没有
标记,只有
和
标记。更新后的第二个示例不会产生所需的HTML输出。使用了另一种方法。现在应该可以了。如果列表大小为%n,则此操作无效=0项。嵌套循环的大小将大于实际剩余大小。您是否注意到输出文本中的/div
?这将关闭该组。我数的是偶数的开始和结束div标签,而不是奇数。是的,我可以看到你做了什么,这就是为什么我花了很长时间仔细看了一下,还没有编辑。它很聪明。问题是,你需要打开第一组。啊,列表可能是空的?然后将所有内容包装在
中。如有必要,将其全部放在一个组合中以隐藏所有详细信息。
<ui:repeat value="#{items}" var="group" varStatus="status" step="n">
<div style="float:left;">
<ui:repeat value="#{items}" var="item" offset="#{status.index}" size="#{status.index + n}">
<div>#{item.content}</div>
</ui:repeat>
</div>
</ui:repeat>