我使用Vaadin 8进行动态bean的表格数据表示。所以我必须在列上定义逻辑过滤器。
为此我需要来自网格或列对象的列数据类型。 有没有办法获取列的数据类型?
在Vaadin 7中我可以使用 container.getType(columnName)
答案 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;样式生成器。