关于grid:Vaadin beanItemContainer属性是数组:如何从数组中获取数据

Vaadin beanItemContainer property is array: how to get the data from the array

我想从数组中获取数据到vaadin网格中。
这是我的代码的一些相关部分:

来自网格的生成器类

1
2
3
4
5
Grid grid = new Grid();
for(int i = 0; i<numberColumns; i++){      
            String propertyId ="deliveryList[" + i +"]";
            grid.addColumn(propertyId);
}

在基类中:

1
2
3
4
5
6
7
public class DeliveryVO {
  private Integer[] deliveryList;

  public Integer[] getDeliveryList() {
    return deliveryList;
  }
...

以及应在其中显示网格的视图中:

1
2
3
4
5
6
7
8
9
10
DeliveryVO deliveryVO1 = new deliveryVO(12);
final BeanItemContainer<DeliveryVO> beanItemContainer = new BeanItemContainer<DeliveryVO>(DeliveryVO.class);
beanItemContainer.addBean(deliveryVO1);

final Grid grid = new xGrid.Builder()
        .setNumberColumns(12)
        .setTimeGroup(TIME_GROUP.HOURLY).build();
grid.setContainerDataSource(beanItemContainer);
...
addComponent(grid);

当我尝试运行此命令时,出现以下错误:

java.lang.IllegalStateException:在网格中找到至少一列,该列在给定容器中不存在:deliveryList [0],标题为" Delivery List [0] "

当我在de DeliveryVO类中使用属??性的propertyId时,可以在网格中获取数据,但是我无法从数组访问数据...有人可以帮助我们将数组数据放入网格吗?


此问题的答案可在以下位置找到:

https://vaadin.com/forum#!/thread/9934386


使用BeanItemContainer时,它期望列是容器的VO或bean类的属性。在您的情况下,最好的选择是使用列生成器,您可以在其中编写从数组值提取和构建列组件的特定逻辑。或者,您可以编写自己的容器,该容器扩展BeanItemContainer,然后为数据提取逻辑覆盖getContainerValue方法。