如何获得Vaadin 8网格列类型?

时间:2017-08-05 12:34:56

标签: vaadin vaadin8

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

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

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

2 个答案:

答案 0 :(得分:2)

Vaadin 8 data binding model中,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();

答案 1 :(得分:0)

在为列设置styleGenerator时,您可以获取列的类型。例如,如果列为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;
 });

我不确定是否有办法获得它&#34;外面&#34;样式生成器。