我想将数组中的数据转换为vaadin网格。 以下是我的代码的一些相关部分:
来自Grid的构建器类
Grid grid = new Grid();
for(int i = 0; i<numberColumns; i++){
String propertyId = "deliveryList[" + i + "]";
grid.addColumn(propertyId);
}
在基类中:
public class DeliveryVO {
private Integer[] deliveryList;
public Integer[] getDeliveryList() {
return deliveryList;
}
...
并在应显示网格的视图中:
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:在Grid中找到至少一个在给定容器中不存在的列:deliveryList [0],标题为&#34; Delivery List [0]&#34;
当我在de DeliveryVO-class中使用属性的propertyId时,我可以在网格中获取数据,但是我无法从数组中访问数据...有人可以帮助我们将这个数组数据放入网格吗?
答案 0 :(得分:1)
这个问题的答案可以在以下网址找到:
答案 1 :(得分:0)
使用BeanItemContainer时,它希望colums是容器的VO或bean类的属性。在您的情况下,最好的选择是使用列生成器,您可以在其中编写从数组值中提取和构建列组件的特定逻辑。或者,您可以编写自己的容器,扩展BeanItemContainer,然后覆盖数据提取逻辑的getContainerValue方法。