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方法。