默认情况下,在Vaadin 8网格中将我的JavaBean的所有属性添加为列?

时间:2017-05-02 23:05:01

标签: java vaadin vaadin-grid vaadin8

Vaadin 8 Grid中是否有一种方法可以自动将所有JavaBean-pattern属性显示为表中的列?并使用属性名称自动标记每个列标题?

this page in the Vaadin guide绑定到数据部分,我们看到这段代码,我们必须明确指定哪些属性用作网格中的列。

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

2 个答案:

答案 0 :(得分:4)

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

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

<强>的JavaDoc:

/**
 * 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)
 */

答案 1 :(得分:1)

您可以使用$sql_task = "SELECT * FROM task where task_assignee='" . $user_result['id']."' and task_start_date < DATE_SUB(NOW(), INTERVAL 3 DAY)";

一次设置所有列
com.vaadin.data.PropertySet

对于基于JavaBean属性的基于PropertySet<Person> ps = ...; Grid<Person> g = Grid.withPropertySet(ps);` 的反射,Vaadin提供:

PropertySet

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

BeanPropertySet.get(Person.class)