Пример jQuery и списка Java
Прямой способ перебора списка Java с помощью jQuery отсутствует, см. Следующий пример:
Пружинный контроллер
@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;
}
На странице JSP вы можете получить доступ к объекту списка через${List} и перебрать его через JSTL.
somepage.jsp
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
${listValue}
Что если я хочу передать объект List напрямую в jQuery?
Проблема: в списке Java нет двойных кавычек
Пример перебора списка Java с помощью jQuery$.each().
HTML-страница
Выше сценарий jQuert не будет выполнен «Uncaught SyntaxError: Неожиданный токен»
HTML-страница (исходный код)
Просмотрите исходный код html выше, Java List не заключал значения списка в двойные кавычки", поэтому jQuery не может его обработать.
Решение: преобразовать список Java в JSON
Решением является преобразование списка Java в формат JSON перед передачей его в jQuery. В контроллере Spring используйте Jackson (или другие процессоры JSON) для преобразования списка в формат 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;
}
HTML-страница
Просмотрите исходный код HTML:
HTML-страница (исходный код)
Готово.
Note
Чтобы перебрать массив объектов в строке в формате JSON, вам необходимо преобразовать его в объект JavaScript (сJSON.parse() или$.parseJSON()) перед его синтаксическим анализом с помощью jQuery$.each()с. См. Этот пример -JQuery Loop Over JSON String