Exemple de jQuery et de liste Java

Exemple de liste jQuery et Java

Il n'existe aucun moyen direct d'itérer sur une liste Java avec jQuery, voir l'étude de cas suivante:

Contrôleur à ressort

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public ModelAndView getPages() {

        List list = new ArrayList();
        list.add("List A");
        list.add("List B");
        list.add("List C");
        list.add("List D");
        list.add("List E");

        ModelAndView model = new ModelAndView("somepage");
        model.addObject("list", list);

        return model;

    }

Page JSP, vous pouvez accéder à l'objet de liste via${List}, et effectuer une itération dessus via JSTL.

somepage.jsp

    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

    
    
  • ${listValue}
  • Que faire si je souhaite passer directement l'objet List à jQuery?

    Problème: il n'y a pas de guillemets doubles dans la liste Java

    Exemple d'itération sur une liste Java avec jQuery$.each().

    page html

    Le script jQuert ci-dessus ne sera pas exécuté «Syncaxe non capturée: jeton inattendu»,

    page html (code source)

    Examinez ci-dessus le code source html, Java List n'a pas inclus les valeurs de la liste avec des guillemets doubles", donc jQuery n'a pas pu le traiter.

    Solution: convertir la liste Java en JSON

    La solution consiste à convertir la liste Java au format JSON avant de la transmettre à jQuery. Dans le contrôleur Spring, utilisez Jackson (ou d'autres processeurs JSON) pour convertir la liste au format JSON.

        @RequestMapping(value = "/", method = RequestMethod.GET)
        public ModelAndView getPages() {
    
            ObjectMapper mapper = new ObjectMapper();
    
            List list = new ArrayList();
            list.add("List A");
            list.add("List B");
            list.add("List C");
            list.add("List D");
            list.add("List E");
    
            ModelAndView model = new ModelAndView("somepage");
    
            String json = "";
            try {
                json = mapper.writeValueAsString(list);
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            model.addObject("list", json);
    
            return model;
    
        }

    page html

    Consultez le code source html:

    page html (code source)

    Terminé.

    Note
    Pour boucler sur un tableau d'objets dans une chaîne au format JSON, vous devez le convertir en objet JavaScript (avecJSON.parse() ou$.parseJSON()) avant de l'analyser avec jQuery$.each(). Voir cet exemple -JQuery Loop Over JSON String