добавление LinkedHashMap в объект ModelAndView и получение его на странице jsp

#jsp #spring-mvc

#jsp #spring-mvc

Вопрос:

Могу ли я добавить LinkedHashMap в объект ModelAndView в Spring controller, чтобы я мог получить эту карту на странице jsp и выполнить дальнейшую обработку.Пожалуйста, предложите.

  mav.addObject("myList", myList);
  

Ответ №1:

Вы создаете ModelAndView в своем методе, но String ничего не знает об этом. Чтобы Spring мог перейти к представлению, указанному в ModelAndView, и использовать модель в ModelAndView, ModelAndView должен быть возвращен методом:

 public ModelAndView editATRRequest(ModelMap model,
                                   @RequestParam("ID") String Id) {
    ModelAndView mav = new ModelAndView("myData", model);
    ...
    mav.addObject("documentList", documentList);
    return mav;
}
  

И, пожалуйста, изучите JSP EL и JSTL. Вы никогда не должны использовать скриптлеты в своих JSP. Пожалуйста, также сделайте отступ в своем коде, чтобы сделать его читаемым.

Комментарии:

1. спасибо, но мой вопрос заключался в том, как прочитать этот список документов, добавленный в объект ModelAndView на странице jsp, поскольку у меня почти нет опыта работы с JSTL и EL, пожалуйста, предложите, если это возможно. @JB Nizet.

2. Из скриплетов (которые не следует использовать): так же, как вы делаете это сейчас. С помощью JSP EL: ${documentList}

3. ниже приведено одно правильное: <% java.util.LinkedHashMap<Long,UserDTO> documentList = (java.util.LinkedHashMap<Long, UserDTO>)${documentList}; %>

4. Нет. Вы не можете использовать JSP EL внутри скриптлетов. Скриплеты содержат Java-код. Правильно (я повторяю) то, что вы уже делаете: java.util.LinkedHashMap<Long,UserDTO> documentList = (java.util.LinkedHashMap<Long, UserDTO>) request.getAttribute("documentList");

5. 1 за комментарий к скриптлету. Боже, я ненавижу скриптлет. О, и другие вещи тоже хороши.