IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

ItemFileReadStore et Servlet [Dojo]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Par défaut 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 : 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>
    ...
    Lorsque j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var jsonStore = new dojo.data.ItemFileReadStore({data: data});
    où data est écrit "en dur" c'est à dire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : 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();
        }
    ...
    }
    Quand je met une trace pour voir le contenu de json.toString(), ça semble ok : le json est bien formé.

  2. #2
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pResp.setContentType("application/json");
    ERE

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 67
    Par défaut
    J'aavais dejà essayé pResp.setContentType("application/json"); et pResp.setContentType("application/x-json"); (comme indiqué dans un article) mais ça ne change rien. J'ai un peu l'impression qu'on peut y mettre ce qu'on veut du moment que ca correspond à rien dans le mime-mapping de Tomcat ??

    Bref, j'ai trouvé mon pb .En fait dans mes données de test, j'ai plusieurs fois la même valeur dans "identifier" (ce qui ne devrait normalement pas arriver car a terme il y aura une contrainte d'unicité). Donc du coup quand dans l'attribut qui sert d'identifant (chez moi il s'apelle aussi identifier) on a plusieurs fois la meme valeur, ça provoque une erreur.

  4. #4
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Re-salut,

    Juste pour info, une autre solution pour générer ton JSON à partir de données objet est d'utiliser par exemple XStream. Cela évite de tout faire à la main.

    ERE

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. [JSP/Servlet] Outils pour developper?
    Par BenoitM dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 04/05/2004, 11h03
  3. [servlet][identification][url]
    Par welty dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 20/08/2003, 09h10
  4. [servlet] initialisation d'objets
    Par tiPouick dans le forum Servlets/JSP
    Réponses: 11
    Dernier message: 05/08/2003, 12h12
  5. Servlet dans Eclipse ?
    Par unflag dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/04/2003, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo