#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 за комментарий к скриптлету. Боже, я ненавижу скриптлет. О, и другие вещи тоже хороши.