3

我正在使用 Vaadin 8 进行动态 bean 的表格数据表示。所以我必须在列上定义逻辑过滤器。

为此,我需要来自网格或列对象的列数据类型。有没有办法获取列的数据类型?

在 Vaadin 7 中,我可以使用container.getType(columnName)

4

2 回答 2

2

Vaadin 8 数据绑定模型中,UI 组件(在您的情况下)不明确知道属性类型Grid。此信息应来自您的域模型。

如果难以从您的域模型中检索,您可以执行以下操作:

// instead of new Grid(beanType)
PropertySet<YourBeanType> ps = BeanPropertySet.get(beanType);
Grid g = new Grid(ps);
...
// get the property type
// okay, this is ugly, but you get the idea
Class<?> type = ps.getProperty(yourPropertyName).get().getType();
于 2017-08-06T19:51:54.350 回答
0

在为列设置时,您可以获取列的类型styleGenerator。例如,如果列是 a ,我会执行以下操作来设置特定样式BigDecimal

Grid.Column c = grid.getColumn("id");
c.setStyleGenerator(obj -> {
       Object value = c.getValueProvider().apply(obj);
       if (value instanceof BigDecimal) {
           return "align-right";
       } 
       return null;
 });

我不确定是否有办法让它“在样式生成器之外”。

于 2017-08-10T18:13:01.563 回答