2010-05-25 3 views
0

Я хотел бы hava Dojo dojox.grid.DataGrid с его данными из сервлета.dojox.grid.DataGrid, населенный от Servlet

Проблема: данные, возвращаемые с сервлета, не отображаются, просто сообщение «Извините, произошла ошибка».

Если я просто поместил строку JSON в HTML, она будет работать. ARRRRGGH.

Может кто-нибудь, пожалуйста, помогите мне!

Благодаря Джефф Портер

Servlet код ...

public void doGet(HttpServletRequest req, HttpServletResponse resp) { 
    res.setContentType("json"); 
    PrintWriter pw = new PrintWriter(res.getOutputStream()); 
    if (response != null) pw.println("[{'batchId':'2001','batchRef':'146'}]"); 
    pw.close(); 
} 

HTML код ...

<div id="gridDD" dojoType="dojox.grid.DataGrid" 
    jsId="gridDD" style="height: 600x; width: 100%;" 
    store="ddInfo" structure="layoutHtmlTableDDDeltaSets"> 
    </div>  

    var rawdataDDInfo = ""; // empty at start 
    ddInfo = new dojo.data.ItemFileWriteStore({ 
     data: { 
      identifier: 'batchId', 
      label: 'batchId', 
      items: rawdataDDInfo 
     } 
    }); 
    <script> 
    function doSelectBatchsAfterDate() { 
    var xhrArgs = { 
     url: "../secure/jsonServlet", 
     handleAs: "json", 
     preventCache: true, 
     load: function(data) { 
     var xx =dojo.toJson(data); 
      var ddInfoX = new dojo.data.ItemFileWriteStore({data: xx}); 
      dijit.byId('gridDD').setStore(ddInfoX); 
     }, 
     error: function(error) { 
       alert("error:" + error); 
     } 
    } 

    //Call the asynchronous xhrGet 
    var deferred = dojo.xhrGet(xhrArgs); 
    } 
    </script> 
<img src="go.gif" onclick="doSelectBatchsAfterDate();"/> 

ответ

0

При создании dojo.data.ItemFileWriteStore с использованием данных JSON возвращается с сервера. Вы просто предоставляете элементы, вам все равно нужно указать метаданные. Правильный код должен быть следующим.

var ddInfoX = new dojo.data.ItemFileWriteStore({ 
    data: { 
     identifier: 'batchId', 
     label: 'batchId', 
     items: xx 
    } 
}); 

И вам не нужна функция dojo.toJson, которая преобразует объект JSON в строку JSON. Для параметра dojo.data.ItemFileWriteStore в качестве параметра используется объект JSON, а не строка JSON.

+0

см. Этот ответ http://stackoverflow.com/questions/2874611/itemfilewritestore-how-to-change-the-data –