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