2017-11-05 5 views
0

중첩 된 속성으로 눈금을 만들려고합니다. 그러나 격자 열에 중첩 된 속성 필드를 표시하는 방법을 찾을 수 없습니다.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을 표시하려고합니다. 그러나이 코드에서는 모든 사용자 객체 스택 참조 또는 다른 것을 표시합니다. 이 같은

: [email protected]

+1

브랜치 문자열에서 정의하려고했으나 getOwner() {return owner.username; }? 또는 사용자 클래스에서 toString을 다시 정의 하시겠습니까? Vaadin은 User 클래스의 toString 메서드를 사용하여 해당 표현을 String으로 표시하고 정의되지 않았으므로 기본값을 사용합니다. 참고 : 모든 속성은 비공개이며 액세스 할 수 없습니다. – DvTr

답변

0

이 솔루션에 대한 간단한 방법이있다. 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; 
    }