2016-03-03 49 views
0

我正在嘗試使用GWT創建一個Web應用程序,並且它是我第一次使用此工具。我也在使用GAE數據存儲。我想使用rpc調用從數據存儲區將數據加載到我的Web應用程序中。我使用菜單,當用戶選擇某個內容時,通過rpc調用正確的方法,以便可以加載正確的數據。我使用arraylist保存數據,因爲我想在我的網頁中顯示它們中的很多。我設法加載數組列表,但我不喜歡它在我的網頁上顯示的方式。我應該更改哪些內容?有沒有其他方法可以做到這一點?代碼如下:如何使用GWT顯示從數據存儲到網站的許多數據

它加載數據

List<String>places=new ArrayList<String>(); 

DatastoreService ds= DatastoreServiceFactory.getDatastoreService(); 

public List<String> display(String s){ 

    Query q=new Query(s); 
    PreparedQuery pq = ds.prepare(q); 
    for (Entity place : pq.asIterable()) { 
     String result = place.getProperties().toString(); 

     places.add(result); 

    }return places; 

我的異步調用

public void onSuccess(Object result) { 
     CellList<String> cellList = new CellList<String>(new TextCell()); 
     final ListDataProvider<String> dataProvider = new ListDataProvider<String>(); 
     dataProvider.addDataDisplay(cellList); 
     final TextBox valueBox = new TextBox(); 

     List<String> list = dataProvider.getList(); 
     list.add(result.toString()); 

     VerticalPanel vPanel = new VerticalPanel(); 
     vPanel.add(cellList); 
     RootPanel.get().add(vPanel); 
    } 

回答

0

調用place.getProperties().toString()不會好看,除非你進一步操縱的結果串類,這是複雜和不必要的。

您需要創建一個Java類來表示您的Place實體,並返回這些Place對象的ArrayList而不是字符串。然後您可以控制要顯示哪些屬性以及如何顯示它們。

+0

因此,而不是我的代碼中的此行: for(Entity place:pq.asIterable()){ String result = place.getProperties()。toString(); places.add(result); } return places; 我應該把實體放在我的數組列表中。對? –

+0

您需要將您的Datastore實體轉換爲您自己Place類的對象。 –

+0

你能用一個例子來解釋一下嗎?對不起,但我很新,這... –

相關問題