Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vaadin: Grid duplicates data

Tags:

java

grid

vaadin

I wrote Grid, as shown in example.

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) {
        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);
    }
}

But data duplicates:

введите сюда описание изображения

As we see, data shows two times.

Please advice, what wrong? How to fix it?

like image 848
Вячеслав Чернышов Avatar asked Feb 23 '26 20:02

Вячеслав Чернышов


1 Answers

Passing Class object to Grid constructor

This constructor grid = new Grid<>(UserDto.class); will automatically add columns according to setters and getters of UserDto class.

Not passing Class object to Grid constructor

If you want to configure columns using addColumn method, you need to instantiate Grid using grid = new Grid<>(); without passing UserDto.class.

like image 179
Tatu Lund Avatar answered Feb 26 '26 09:02

Tatu Lund



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!