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 :
Lorsque j'utilise
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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> ...où data est écrit "en dur" c'est à dire
Code : Sélectionner tout - Visualiser dans une fenêtre à part var jsonStore = new dojo.data.ItemFileReadStore({data: data});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!
Code : Sélectionner tout - Visualiser dans une fenêtre à part var data= {identifier:...};
La servlet :
Quand je met une trace pour voir le contenu de json.toString(), ça semble ok : le json est bien formé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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(); } ... }
Partager