0

Vaadin 8 Grid 中有没有办法自动将所有 JavaBean 模式属性显示为表中的列?并自动用属性名称标记每个列标题?

Vaadin 指南中此页面的Binding to Data部分中,我们看到了这段代码,我们必须在其中明确指定哪些属性用作网格中的列。

Grid<Person> grid = new Grid<>();
grid.setItems(people);
grid.addColumn(Person::getName).setCaption("Name");
grid.addColumn(Person::getBirthYear).setCaption("Year of birth");
4

2 回答 2

4

是的,这可以通过将 bean 类型作为参数传递给网格构造函数来实现:

Grid<Person> grid = new Grid<>(Person.class);

Java文档:

/**
 * Creates a new grid that uses reflection based on the provided bean type
 * to automatically set up an initial set of columns. All columns will be
 * configured using the same {@link Object#toString()} renderer that is used
 * by {@link #addColumn(ValueProvider)}.
 *
 * @param beanType
 *            the bean type to use, not <code>null</code>
 * @see #Grid()
 * @see #withPropertySet(PropertySet)
 */
于 2017-05-03T06:28:31.187 回答
1

您可以使用以下命令一次设置所有列com.vaadin.data.PropertySet

PropertySet<Person> ps = ...;
Grid<Person> g = Grid.withPropertySet(ps);`

PropertySet对于基于 JavaBean 属性的反射,Vaadin 提供:

BeanPropertySet.get(Person.class)

对于标准用例(默认 BeanPropertySet 足够好),您可以简单地使用(正如@JDC 已经回答的那样):

new Grid<>(Person.class)
于 2017-05-03T07:31:46.967 回答