Как установить тип данных сетки Vaadin7 после ее создания - PullRequest
0 голосов
/ 21 января 2019

Я использую Vaadin-7 Designer для создания Grid, который должен содержать несколько столбцов, некоторые из которых не являются String.

Когда я пытаюсь добавить строку, содержащую не-строковый элемент, я получаю сообщение об ошибке:

java.lang.IllegalArgumentException: Parameter 0(4711) is not an instance of java.lang.String
at com.vaadin.ui.Grid.addRow(Grid.java:6821)

Как я могу предоставить Grid информацию о том, что столбец должен быть целым числом?

Поскольку я не имею никакого влияния на конструктор (он вызывается дизайнером), мне нужно решение, которое не использует его (или показывает, как применить новый объект к конструктору или аналогичному впоследствии)

1 Ответ

0 голосов
/ 21 января 2019

Если у вас есть доступ к сетке, вы можете попытаться определить свой столбец Integer следующим образом:

grid.addColumn("Column_Name", Integer.class);

Вы должны сделать это перед использованием сетки (добавление строк).

Другой способ - использовать BeanItemContainer. Этот код из документации Vadding для сетки:

// Have some data
Collection<Person> people = Lists.newArrayList(
    new Person("Nicolaus Copernicus", 1543),
    new Person("Galileo Galilei", 1564),
    new Person("Johannes Kepler", 1571));

 // Have a container of some type to contain the data
BeanItemContainer<Person> container =
new BeanItemContainer<Person>(Person.class, people);

// Create a grid bound to the container
Grid grid = new Grid(container);
grid.setColumnOrder("name", "born");
layout.addComponent(grid);

Для получения дополнительной информации: https://vaadin.com/docs/v7/framework/components/components-grid.html

Удачи!

...