ItemFileReadStore et Servlet
Bonjour,
Bon comme d'habitude, j'essaie de faire comme le dit la doc ou les articles et ça ne marche pas...
Lorsque pour créer mon ItemFileReadStore afin d'afficher des données dans un DataGrid, j'ai recours à une Servlet, j'ai le message d''erreur "Sorry, an error occured"
Voici des extrait du code :
La jsp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
...
<script type="text/javascript" src="<%=request.getContextPath()%>/js/dojo-release-1.3.1/dojo/dojo.js"
djConfig="isDebug:false, parseOnLoad: true"></script>
<script type="text/javascript">
dojo.require("dijit.form.CheckBox");
dojo.require("dojox.grid.DataGrid");
dojo.require("dojox.widget.PlaceholderMenuItem");
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("dojo.parser");
var theadLayout = [
{field : "selector", name: "", width:"20px", type: dojox.grid.cells.Bool, editable: true},
{field : "id", name: "id", hidden: true},
{field : "identifier", name: "Identifiant", width:"200px", formatter: formatLink},
{field : "firstname", name: "Prenom"},
{field : "lastname", name: "Nom"}
];
var jsonStore = new dojo.data.ItemFileReadStore({url: "<%=request.getContextPath()%>/userlistjson"});
function initGrid(){
//var items = jsonStore.fetch();
var grid = new dojox.grid.DataGrid({
query: { identifier: '*' },
store: jsonStore,
structure: theadLayout,
headerMenu: gridMenu,
rowSelector: '20px',
rowsPerPage: '20',
noDataMessage: "TODO pas de données",
region: 'center'
},'myDataGrid');
container.addChild(grid);
grid.startup();
}
dojo.addOnLoad(initGrid);
</script>
... |
Lorsque j'utilise
Code:
var jsonStore = new dojo.data.ItemFileReadStore({data: data});
où data est écrit "en dur" c'est à dire
Code:
var data= {identifier:...};
dans la jsp, ça fonctionne, les données s'affichent correctement dans la table. Mais par une Servlet, (des traces prouvent que je passe dans la servlet), nada!
La servlet :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
public class UserGetListAsJson extends HttpServlet {
...
public void doGet(HttpServletRequest pReq, HttpServletResponse pResp)
throws IOException, ServletException
{
...//recuperatrion de ma liste de users dans une BD
JSONObject json = new JSONObject();
try
{
json.put("identifier", "identifier");
json.put("label", "identifier");
JSONArray jsonArray = new JSONArray();
for (int i=0; i<users.size();i++) {
JSONObject userAsJson = new JSONObject();
userAsJson.put("id", users.get(i).getId());
userAsJson.put("identifier", users.get(i).getLogin());
userAsJson.put("firstname", users.get(i).getFirstname());
userAsJson.put("lastname", users.get(i).getLastname());
jsonArray.add(userAsJson);
}
json.put("items", jsonArray);
} catch (Exception ex){
ex.printStackTrace();
}
pResp.setContentType("text/x-json");
PrintWriter out = pResp.getWriter();
out.print(json.toString());
//out.flush();
}
...
} |
Quand je met une trace pour voir le contenu de json.toString(), ça semble ok : le json est bien formé.