当前位置: 首页 > 知识库问答 >
问题:

JSF2UI:repeat:在一个div中每n个项目分组一次

沈博延
2023-03-14

给定一个我想在这样的页面上排列的集合

<!-- Group 0 -->
<div style="float:left;">
    <div><!-- Item 0 --></div>
    <div><!-- Item 1 --></div>

    <!-- ... -->

    <div><! -- Item n - 1 --></div>
</div>
<!-- Group 1 -->
<div style="float:left;">
    <div><!-- Item n     --></div>
    <div><!-- Item n + 1 --></div>

    <!-- ... -->

    <div><! -- Item 2n - 1 --></div>
</div>

<!-- ... -->

<!-- Group g -->
    <div><!-- Item gn     --></div>
    <div><!-- Item gn + 1 --></div>

    <!-- ... -->

    <div><! -- Item (g + 1)n - 1 --></div>
</div>

在ui中是否有某种技巧可以用来实现这一点:重复或使用其他技术,最好不要创建自定义组件?

共有2个答案

姚嘉容
2023-03-14

如果可能,我会在服务器端中断集合:

<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>

另一种选择可能是(尚未测试,尤其不确定尺寸行为):

<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>

编辑:第二个版本已被替换

闾丘淇
2023-03-14

您可以通过varState属性检查当前循环,并打印中介

例如每3项:

<div style="float: left;">
    <ui:repeat value="#{bean.list}" var="item" varStatus="loop">
        <h:outputText value="&lt;/div&gt;&lt;div style='float: left;'&gt;" escape="false" rendered="#{not loop.first and loop.index % 3 == 0}" />
        <div>#{item}</div>
    </ui:repeat>
</div>

请注意,在

根据注释更新,这里有一个替代方法,具有

<ui:repeat value="#{bean.list}" var="item" varStatus="loop">
    <h:outputText value="&lt;div style='float: left;'&gt;" escape="false" rendered="#{loop.index % 3 == 0}" />
    <div>#{item}</div>
    <h:outputText value="&lt;/div&gt;" escape="false" rendered="#{loop.last or (loop.index + 1) % 3 == 0}" />
</ui:repeat>

 类似资料:
  • 问题内容: 给定一个我想安排在这样的页面上的集合: 我可以使用某种技巧在ui:repeat或其他技术( 最好 是创建自定义组件之外)中进行此操作吗? 问题答案: 您可以根据属性检查当前循环,并在必要时打印中介。 例如,每3个项目: 请注意,不可能将其包装为纯HTML到中,因为它会导致格式不正确的XML,因此将其作为XML实体。 *根据评论进行 *更新 ,这是仅定义一次的另一种方法,可能不太混乱:

  • 问题内容: | uId | title | amount | makers | widgets | 1 richard 998 xcorp sprocket 2 swiss 995 ycorp framitz 3 ricky 90 zcorp flobber 4 ricky2 798 xcorp framitz 1 lilrick 390 xcorp sprocket 1 brie 200 mco

  • 各位早上好,我正在创建一个产品销售系统,这个话题会有点长,因为我想好好解释一下。 正在用Vaadin+MySQL+springboot+Maven开发的系统 在主屏幕上,我们有一个网格,上面有“新建”、“更改”和“删除”按钮: 当点击new按钮时,将打开一个窗口,开始“销售”产品: 这里的问题是这样的,当我点击“+项”时会出现以下情况: 问题:创建了一个滚动条(在窗口的右边),保存、关闭和+项按钮

  • 问题内容: 我正在尝试用Python编写Haskel函数’splitEvery’。这是它的定义: 这个的基本版本工作正常,但是我想要一个可以与生成器表达式,列表和迭代器一起使用的版本。 并且 ,如果有一个生成器作为输入,则应该返回一个生成器作为输出! 测验 当前实施 这是我当前拥有的代码,但不适用于简单的列表。 此代码不适用于生成器表达式(感谢软糖修复该表达式): 必须有一个简单的代码来进行拆分。

  • 问题内容: 是否可以每个字符分割一个字符串? 例如,假设我有一个包含以下内容的字符串: 我怎样才能使它看起来像这样: 问题答案: 192 为了完整起见,你可以使用正则表达式执行此操作: 对于字符的奇数,你可以执行以下操作: 你还可以执行以下操作,以简化较长块的正则表达式: re.finditer如果字符串很长,则可以使用它逐块生成。

  • 我正在构建一个定制的Java库。我把我的大部分“重复”代码都保存在那里,比如文件处理、字符串处理等。每次我想使用它们时,我都必须将该类复制并粘贴到我正在进行的其他项目中。有没有办法让这个自定义库类成为“依赖项”?我在用我的智能手机。