我对JSF不太好,我已经搜索过,但无法在网上找到类似的答案,请我需要帮助。我有一套下面的示例表可以增长,但不确定每辆车有多少行。
...................................................
| 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 重复而不是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有行分组或带有表的组行,我只是想知道如何用重复方法做到这一点
答案 0 :(得分:0)
在JSF中执行此操作与在普通Java中执行此操作并没有什么不同
Pseudocode java
假设有一个排序列表(就像在你的表中那样然后排序)所以不需要额外重写支持模型
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中(也是'伪代码',未经测试)
<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>