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

时间:2015-05-06 12:46:07

标签: arrays grid vaadin

我想将数组中的数据转换为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时,我可以在网格中获取数据,但是我无法从数组中访问数据...有人可以帮助我们将这个数组数据放入网格吗?

2 个答案:

答案 0 :(得分:1)

这个问题的答案可以在以下网址找到:

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

答案 1 :(得分:0)

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