Pregunta

Me gustaría hava un Dojo dojox.grid.DataGrid con sus datos de un servlet.

Problema:. Los datos devueltos por el servlet no va a ser visualizado, sólo el mensaje "Lo sentimos, ha ocurrido un error"

Si tan sólo colocar la cadena JSON en el HTML, funciona. ARRRRGGH.

Puede alguien por favor me ayude!

Gracias Jeff Porter

código de 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 código ...

    <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();"/>
¿Fue útil?

Solución

Cuando se crea el dojo.data.ItemFileWriteStore utilizando los datos JSON devueltos desde el servidor. Usted acaba de proporcionar los elementos, que todavía tiene que especificar los metadatos. El código correcto debe ser lo más abajo.

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

Y no se necesita la función dojo.toJson que convierte el objeto JSON para una cadena JSON. El dojo.data.ItemFileWriteStore requiere un objeto JSON como parámetro, no una cadena JSON.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top