Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSF2UI:repeat:在一个div中每n个项目分组一次_Java_Jsf_Jsf 2_Uirepeat - Fatal编程技术网

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>