JSF 重复行分组或 groupRow

JSF repeat for row grouping or groupRow

我对 JSF 不太了解,我搜索过但在网上找不到类似的答案,我需要帮助。我有一组样例table下面可以增长,不确定每辆车有多少排。

...................................................
| ID         | Car        | Year       | Colour   |
|.................................................|
| 37efcc3e   | Audi       | 1994       | Green    |
| 2aacdbd4   | Audi       | 2009       | Yellow   |
| 5dd57389   | BMW        | 1989       | Green    |
| 94f32d8a   | BMW        | 1978       | Orange   |
| d03b3af1   | BMW        | 2001       | Green    |
| 7ca88a0b   | Ford       | 1964       | Silver   |

我想像下面这样使用 div 来实现

Audi
1994   Green     37efcc3e
2009   Yellow    2aacdbd4

BMW    
1989   Green     5dd57389
1978   Orange    94f32d8a
2001   Green     d03b3af1

Ford
1964   Silver    7ca88a0b

我如何使用 JSF 或 Primefaces repeat 而不是 dataTable 来实现此目的。
与普通 java

List<Product> productList;
for (Product product1 : productList) {
  for (Product product2 : productList) {
    if(product1.getCar().equals(product2.getCar())) {//check if car changes

    }
  }
}
Or can use set
Set<Product> set = new HashSet<Product>(productList);
if(set.size() < list.size()){//check if car changes

}

Primefaces 使用 table 进行行分组或分组行,我只是想知道如何使用 repeat

进行分组

在 JSF 中执行此操作与在普通 Java

中执行此操作并没有什么不同

伪代码java

假设一个排序列表(就像在你的 table 中,但随后排序)所以没有额外重写支持模型

for(int i=0; i<cars.size();i++) {
    if (i==0 || !cars[i].getBrand().equals(car[i-1].getBrand())) {
       System.out.println(cars[i].getBrand());
    }
    System.out.println(cars[i].type + "\t" +cars[i].color + "\t" + cars[i].year);
}

并且在 JSF 中(也 'pseudocode',未测试)

<table>
  <ui:repeat var="car" value="#{bean.cars}" varStatus="myVarStatus">

    <ui:fragment  rendered="#{myVarStatus.index == 0 || !bean.cars.get(myVarStatus.index).brand.equals(bean.cars.get(myVarStatus.index -1).brand}">
        <tr><td colspan="3"><h:outputText value="#{car.brand}"></td></tr>
    </ui:fragment>

    <tr>
       <td>#{car.type}</td>
       <td>#{car.color}</td>
       <td>#{car.year}</td>
    </tr>

  </ui:repeat>
</table>