2013-01-23 95 views
0

我試圖在Dojo 1.8中獲得JsonRest功能。正在加載DataGrid。 我已經讓Dojo客戶端成功與REST服務器通話。我打電話,我的DataGrid標題被填充,但沒有填充數據。來自REST呼叫的響應是...Dojo 1.8 JsonRest和DataGrid

{「data」:{「fundId」:「12345」,「fundDescription」:「高風險股票基金」,「bidPrice」:26.8,「offerPrice」:27.4 「LASTUPDATED」: 「2013-01-23T14:13:45」}}

我的道場的代碼是...




     require([ 
      "dojo/store/JsonRest", 
      "dojo/store/Memory", 
      "dojo/store/Cache", 
      "dojox/grid/DataGrid", 
      "dojo/data/ObjectStore", 
      "dojo/query", 
      "dojo/domReady!" 
     ], function(JsonRest, Memory, Cache, DataGrid, ObjectStore, query) { 

      var restStore, memoryStore, myStore, dataStore, grid; 

      restStore = JsonRest({target:"http://localhost:8080/funds/12345"}); 
      memoryStore = new Memory(); 
      myStore = Cache(restStore, memoryStore); 

      grid = new DataGrid({ 
       store: dataStore = new ObjectStore({objectStore: myStore}), 

     structure: [ 
      {name:"Fund Id", field:"fundId", width: "200px"}, 
      {name:"Description", field:"fundDescription", width: "200px"}, 
      {name:"Bid Price", field:"bidPrice", width: "100px"}, 
      {name:"Offer Price", field:"offerPrice", width: "100px"}, 
      {name:"Last Updated", field:"lastUpdated", width: "200px"} 
     ] 
      }, "target-node-id"); // make sure you have a target HTML element with this id 

      grid.startup(); 

      query("#save").onclick(function(){ 
       dataStore.save(); 
      }); 
     }); 

    

我缺少的是讓成功加載到網格中的數據?

回答

0

我想這可能是由於您的REST - 響應的data不是array而是object。它實際上應該是這樣的:

[{ 
     "fundId": "12345", 
     "fundDescription": "High Risk Equity Fund", 
     "bidPrice": 26.8, 
     "offerPrice": 27.4, 
     "lastUpdated": "2013-01-23T14:13:45" 
    }] 

ObjectStore預期的array。正如我通常不這樣做,我不太確定,你必須改變。但是你必須確保,無論如何,JSON -Response給你一個array。也許你把它提交給ObjectStore這樣以後:

grid = new DataGrid({ 
    // getting data, after making sure its an array ;) 
    store: dataStore = new ObjectStore({objectStore: myStore.get(0)}), 
    ... 

我不知道,如果你要那樣做,因爲某些原因,但是對於你的榜樣,它在this example做的方式應符合您的需要,據我可以看到... ...

+0

謝謝......我的回覆是由Spring的MVC註釋的REST支持的默認實現返回的......我需要查看一下以獲得響應,並獲得正確的響應。 – mortsahl

0

我在我的數據從CXF Web服務來了一個類似的問題,看起來像:

{「客戶」:[{「ID」:1,」名稱「:」John-1「},{」id「:2,」name「:」John-2「}]}

我在這裏找到了我的答案:http://dojotoolkit.org/documentation/tutorials/1.8/populating_datagrid/而我不得不從商店手動獲取我的數據。

.... 
restStore.query("", {}).then(function(data){  
    dataStore = new ObjectStore({objectStore: new Memory({ data: data['Customer'] })}), 

    grid = new DataGrid({ 
     store: dataStore, 
     items:data.items, 
     structure: [ 
      {name:"Customer ID", field:"id", width: "200px"}, 
      {name:"Customer Name", field:"name", width: "200px"} 
     ] 
    }, "target-node-id"); // make sure you have a target HTML element with this id 
    grid.startup(); 
} 
... 



我希望這有助於。
這是我第一次發佈,所以我的不好,如果事情有點棘手。

+0

謝謝你的幫助。我已經意識到放棄角鬥的道場。 – mortsahl