dojox.grid.DataGrid peuplée de Servlet
-
04-10-2019 - |
Question
Je voudrais Hava un Dojo dojox.grid.DataGrid avec ses données à partir d'un servlet.
Problème:. Les données renvoyées par la servlet ne soit pas affiché, juste le message « Désolé, une erreur est survenue »
Si je place juste la chaîne JSON dans le code HTML, cela fonctionne. ARRRRGGH.
Quelqu'un peut-il me plaît aider!
Merci Jeff Porter
Code 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();
}
Code 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();"/>
La solution
Lorsque vous créez le dojo.data.ItemFileWriteStore
en utilisant les données JSON renvoyées du serveur. Vous fournissez uniquement les éléments, vous doit encore préciser les métadonnées. devrait être comme ci-dessous le code correct.
var ddInfoX = new dojo.data.ItemFileWriteStore({
data: {
identifier: 'batchId',
label: 'batchId',
items: xx
}
});
Et vous n'avez pas besoin de la fonction dojo.toJson
qui convertit l'objet JSON à une chaîne JSON. Le dojo.data.ItemFileWriteStore
a besoin d'un objet JSON comme paramètre, pas une chaîne JSON.