如何获得Vaadin 8网格柱类型?
我使用vaadin8来表示带有动态bean的表格数据。所以我必须在列上定义逻辑过滤器 为此,我需要来自网格或列对象的列数据类型。 有没有办法获取列的数据类型 在Vaadin 7中,我可以使用container.getType(columnName)在中,UI组件不明确知道属性类型(在您的示例中是如何获得Vaadin 8网格柱类型?,vaadin,vaadin8,Vaadin,Vaadin8,我使用vaadin8来表示带有动态bean的表格数据。所以我必须在列上定义逻辑过滤器 为此,我需要来自网格或列对象的列数据类型。 有没有办法获取列的数据类型 在Vaadin 7中,我可以使用container.getType(columnName)在中,UI组件不明确知道属性类型(在您的示例中是网格)。此信息应来自您的域模型 如果难以从域模型中检索,可以执行以下操作: // instead of new Grid(beanType) PropertySet<YourBeanType>
网格
)。此信息应来自您的域模型
如果难以从域模型中检索,可以执行以下操作:
// 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();
//代替新网格(beanType)
PropertySet ps=BeanPropertySet.get(beanType);
网格g=新网格(ps);
...
//获取属性类型
//好吧,这很难看,但你明白了
Class type=ps.getProperty(yourPropertyName).get().getType();
设置列的样式生成器时,可以获取列的类型。例如,如果列是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;
});
我不确定是否有办法让它“在”样式生成器之外 在本例中,您将获得实例的类型。虽然它聪明而且可能有用,但并不总是与bean的属性类型相同(尽管它可以从中赋值),这与其说是获取者,不如说是猜测者。