Ошибка вложенного свойства сетки Vaadin8

Я пытаюсь создать сетку с вложенным свойством. Но я не могу найти способ показать вложенное свойство поля в столбце сетки.

    private Component buildGrid() {

        branchGrid = new Grid<>(Branch.class);
        branchGrid.setItems(DummyData.allBranches);
        branchGrid.setSelectionMode(Grid.SelectionMode.SINGLE);
        branchGrid.setSizeFull();
        branchGrid.getEditor().setEnabled(false);

        branchGrid.addComponentColumn((ValueProvider<Branch, Component>) branch -> {
            Button btnEdit = new Button(VaadinIcons.EDIT);
            btnEdit.addStyleName(MaterialTheme.BUTTON_CUSTOM + " " + MaterialTheme.BUTTON_BORDER);
            btnEdit.setDescription("Click for edit!");
            return btnEdit;
        }).setId("edit");

        branchGrid.setColumnOrder("edit", "branchId", "branchName", "email", "phone", "location", "owner", "active");

        return branchGrid;
    }


public class Branch {

    private String branchId; //yymmddHHmmSSS
    private String branchName;
    private String email;
    private String phone;
    private String location;
    private User owner;
    private boolean active;
}

public class User {

    private long userId;
    private String username;
    private String password;
    private String email; 
}

Я хочу просто показать user.username в сетке. Но в этом коде покажите все ссылки на стек пользовательских объектов или что-то еще.

как это: com.meyrasoft.checkupbox.model.User@12703bc

1 ответ

Решение

Существует простой способ для этого решения. Если мы определяем Grid <\ Branch /> branchGrid, мы должны использовать определение addColumn(), как показано ниже.

private Component buildGrid() {

        Grid<Branch> branchGrid = new Grid<>();
        branchGrid.setItems(DummyData.allBranches);
        branchGrid.setSelectionMode(Grid.SelectionMode.SINGLE);
        branchGrid.setSizeFull();
        branchGrid.getEditor().setEnabled(false);

        branchGrid.addComponentColumn((ValueProvider<Branch, Component>) branch -> {
            Button btnEdit = new Button(VaadinIcons.EDIT);
            btnEdit.addStyleName(MaterialTheme.BUTTON_CUSTOM + " " + MaterialTheme.BUTTON_BORDER);
            btnEdit.setDescription("Click for edit!");
            return btnEdit;
        }).setId("edit");

        branchGrid.addColumn(b -> b.getBranchId()).setCaption("Branch Id");
        branchGrid.addColumn(b -> b.getBranchName()).setCaption("Branch Name");
        branchGrid.addColumn(b -> b.getEmail()).setCaption("E-Mail");
        branchGrid.addColumn(b -> b.getPhone()).setCaption("Phone");
        branchGrid.addColumn(b -> b.getLocation()).setCaption("Location");
        branchGrid.addColumn(b -> String.valueOf(b.getOwner().getUsername())).setCaption("Owner");
        branchGrid.addColumn(b -> b.isActive()).setCaption("Active Status");

        return branchGrid;
    }
Другие вопросы по тегам