Как инициализировать объект, представленный строкой сетки Vaadin?
я использую
Vaadin
framework v23 для моего проекта.
Я хотел добавить столбец компонента в одну из моих сеток, числовое поле. Строки моей сетки представляют объект из базы данных, к которой подключена моя программа. Я прошу ввода от пользователя, и я хочу записать этот ввод обратно в БД. Я нашел это решение на нескольких сайтах:
private Grid<Honey> initHoneyGrid() {
Grid<Honey> honeyGrid = new Grid<>(Honey.class);
honeyGrid.setItems(honeys);
honeyGrid.removeColumnByKey("id");
honeyGrid.removeColumnByKey("quantityPacked");
honeyGrid.removeColumnByKey("flatCost");
honeyGrid.removeColumnByKey("sellingPrice");
honeyGrid.setColumns("kindOfHoney", "weight", "quantityBack");
honeyGrid.addComponentColumn(item -> new NumberField("Set the quantity you brought back'", event -> {
item.setQuantityBack(event.getValue().intValue());
honeyService.updateHoney(item);
honeyGrid.getDataProvider().refreshAll();
}));
return honeyGrid;
}
Однако переменная item создает исключение NullPointerException. Переменная «мед» представляет собой ArrayList, который заполняется напрямую из БД. Я использую Spring Boot JPA для доступа к базе данных. Как я могу этого избежать?
1 ответ
проверьте документы здесь, чтобы увидеть компоненты и их использование, причина NPE, которую вы получаете, заключается в том, что элемент может быть не инициализирован, то, что вы пытаетесь сделать сейчас, это назначить какое-то свойство, в котором у вас нет никакого значения.
item
к
лямбда-выражение уже назначит
new NumberField(...)
к
ìtem
в конце