@Stancialeta

Как получить массив из Spring при загрузке JSP страницы?

Нужно записать массив в переменную при загрузке страницы. Код ниже не работает:
<c:set var="array" value="${pageContext.request.contextPath}/spring_link/getarray"/>

Содержимое home.jsp:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
<c:set var="array" value="${pageContext.request.contextPath}/spring_link/getarray"/>
</body>
</html>

Содержимое контроллера:
@RequestMapping(value = "/getarray", method = RequestMethod.GET)
    public String getArray(ModelMap model) {

        Map<String, Class>  array = Class.getArray();
        model.put("array ", "array");
        return "home";
    }

Способ контроллер -> home.jsp не предлагайте. Скриплеты также использовать нельзя.
Поскольку получить нужно именно java коллекцию, не JSON, использование Ajax, по ходу не к месту.
Как я понимаю моя задача противоречит концепции MVC, но мой наставник настоял именно на таком подходе.
  • Вопрос задан
  • 1403 просмотра
Решения вопроса 1
jaxtr
@jaxtr
JavaEE/Spring-разработчик
Вот это:
<c:set var="array" value="${pageContext.request.contextPath}/spring_link/getarray"/>


создаёт в JSP переменную array с строкой равной ${pageContext.request.contextPath}/spring_link/getarray

Скажу даже больше - из представления, возвращённым не контроллером Spring WebMVC, невозможно получить данные из контроллеров (если точнее, то можно, но это костыли). В стандартном WebMVC контроллер решает, какое представление отдавать и какие данные передавать представлению через модели. Это тебе не JSF/CDI, хотя если сильно хочется, то можно скрестить JSF/CDI со Spring, но это тоже извращения.

Правильный вариант один - контроллер возвращающий нужное представление и передающий в него нужные данные.

P.S.: зачем решать задачи способами, противоречащими устоявшимся концепциям?
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Обрабатывает данные из Spring так:

<c:forEach items="${arrays}" var="array"> //принимаем массив 
    ${array.String}
    ${array.Class.(поля)}
 </c:forEach>


Из контролера отправляй:

@RequestMapping(value = "/getarray", method = RequestMethod.GET)
    public String getArray(ModelMap model) {

        Map<String, Class>  array = Class.getArray();
        model.addAttribute("arrays ", array); // передаем в jsp массив
        return "home";
    }


Надеюсь подсказал именно то что надо
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы