2017-11-05 3 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; return owner.username; }?または、UserクラスのtoStringを再定義しますか? VaadinはUserクラスのtoStringメソッドを使用してその表現をStringとして表示し、定義されていないのでデフォルトのものを使用します。注:あなたのすべてのプロパティは非公開でアクセスすることはできません。 – DvTr

答えて

0

この解決のための簡単な方法があります。 グリッド< \ 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; 
    }