Vaadin: дублируются значения для Grid

101
01 февраля 2022, 22:30

Я описал Grid, как описано в инструкции.

@Route
@SpringComponent
public class MainView extends VerticalLayout {
    private final UserService userService;
    private Label label;
    private Grid<UserDto> grid;
    public MainView(UserService userService) {
        this.userService = userService;
        initComponents(userService);
    }
    private void initComponents(UserService userService) {
        initHeader();
        initMainGrid(userService);
    }
    private void initMainGrid(UserService userService) {
        grid = new Grid<>(UserDto.class);
        grid.setItems(userService.getAll());
        grid.addColumn(UserDto::getId).setHeader("ID");
        grid.addColumn(UserDto::getUsername).setHeader("Имя пользователя");
        grid.addColumn(UserDto::getPassword).setHeader("Пароль");
        grid.addColumn(UserDto::getEmail).setHeader("email");
        grid.addColumn(UserDto::getPhone).setHeader("Телефон");
        grid.addColumn(UserDto::getActive).setHeader("Активен");
        add(grid);
    }
    private void initHeader() {
        label = new Label("Список пользователей");
        add(label);
    }
}

Но данные почему-то дублируются:

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

Answer 1

Разобрался. Теперь класс выглядит так:

@Route
@SpringComponent
public class MainView extends VerticalLayout {
    private final UserService userService;
    private Label label;
    private Grid<UserDto> grid;
    public MainView(UserService userService) {
        this.userService = userService;
        initComponents(userService);
    }
    private void initComponents(UserService userService) {
        initHeader();
        initMainGrid(userService);
    }
    private void initMainGrid(UserService userService) {
        grid = new Grid<>(UserDto.class);
        grid.setItems(userService.getAll());
        Grid.Column<UserDto> id = grid.getColumnByKey("id");
        Grid.Column<UserDto> username = grid.getColumnByKey("username");
        Grid.Column<UserDto> password = grid.getColumnByKey("password");
        Grid.Column<UserDto> email = grid.getColumnByKey("email");
        Grid.Column<UserDto> phone = grid.getColumnByKey("phone");
        Grid.Column<UserDto> active = grid.getColumnByKey("active");
        id.setHeader("ID");
        username.setHeader("Имя пользователя");
        password.setHeader("Пароль");
        email.setHeader("email");
        phone.setHeader("Телефон");
        active.setHeader("Активен");
        List<Grid.Column<UserDto>> columns = Lists.newArrayList(id, username, password, email, phone, active);
        grid.setColumnOrder(columns);
        add(grid);
    }
    private void initHeader() {
        label = new Label("Список пользователей");
        add(label);
    }
}

Не очень лаконично, но вроде Vaadin не славится лаконичностью.

READ ALSO
Поиск в базе через Spring Data Jpa

Поиск в базе через Spring Data Jpa

Есть два @Entity - Meal и Restaurant, взаимосвязанные через @OneToMany - ресторан имеет List<Meal> mealListВот сущности (геттеры и сеттеры намеренно не указал, но в коде...

187
Как реализовать текст двух цветов

Как реализовать текст двух цветов

Появился в макете такой дизайн кнопки 404:

90
Выравнивание блока div по центру

Выравнивание блока div по центру

Как я могу выровнять по центру картинку внутри блока <div>?

108