2014-02-21 2 views
0

Я получаю список результатов с помощью вызова rpc. Я уверен, что список результатов верен, потому что когда я использую диалоговое окно, все данные есть. Но когда я положил его в CellTable, некоторые строки потеряли. Почему это происходит?Почему Gwt CellTable не показывает все результаты?

public void onSuccess(List<List<String>> result) { 
      CellTable<List<String>> bugsTable = new CellTable<List<String>>(); 
      // Create columns 
      TextColumn<List<String>> idColumn = new TextColumn<List<String>>() { 
       @Override 
       public String getValue(List<String> recordSet) { 
       return recordSet.get(0).toString(); 
       } 
      }; 

      TextColumn<List<String>> idCommitColumn = new TextColumn<List<String>>() { 
       @Override 
       public String getValue(List<String> recordSet) { 
        return recordSet.get(1).toString(); 
       } 
      }; 

      TextColumn<List<String>> erMessageColumn = new TextColumn<List<String>>() { 
       @Override 
       public String getValue(List<String> recordSet) { 
        return recordSet.get(2).toString(); 
       } 
      }; 

      // Add the columns. 
      bugsTable.addColumn(idColumn, "ID"); 
      bugsTable.addColumn(idCommitColumn, "ID commit"); 
      bugsTable.addColumn(erMessageColumn, "Message"); 

      // Set the total row count. This isn't strictly necessary, but it affects 
      // paging calculations, so its good habit to keep the row count up to date. 
      bugsTable.setRowCount(result.size(), true); 

      // Push the data into the widget. 
      bugsTable.setRowData(0, result); 
      tabP.add(bugsTable, "bugs"); 
      RootPanel.get("loadingbarImg").setVisible(false); 
     } 
    }); 

ответ

2

по умолчанию ProvidesKey (SimpleKeyProvider) использует сами объекты в качестве ключей, поэтому их equals() и hashCode() используются. Контракт java.util.List определяет действия equals() и hashCode(), а также указывает, что два списка с одинаковыми элементами будут equals() и имеют одинаковые hashCode(), поэтому, если у вас есть несколько одинаковых строк в вашем списке, это может быть проблемой.

Решение: не используйте для своих строк List<String>, определите вместо этого определенный класс строк.

Смежные вопросы