Как инициализировать объект, представленный строкой сетки Vaadin?

я использую Vaadinframework 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в конце

Другие вопросы по тегам