Переменная JS на странице JSP cеттится значением только после перезагрузки страницы
В моем сервлете следующий код сеттит сессионный атрибут:
session.setAttribute("culturesJsonArray", CommonUtils.toJson(foundLanguage.getCultures()));
Эта перменнная в js коде на странице jsp должна его принимать:
<script>let cultures = ${sessionScope.culturesJsonArray};</script>
Сначала происходит вызов сервлета, а затем переменная js должна сетиться. При первой загрузке страницы переменная сеттится пустым значением [] и только после перезагрузки страницы переменная загружается json'ом. Какова последовательность загрузки jsp страниц и обновлением session аттрибутов? В этом ли проблема?
Спасибо
Ответы (1 шт):
Проблема была в том, что вызов AJAX и ответ не обновляют DOM и, поэтому, сессионные атрибуты не были видны на странице, а были только после её обновления. Я решил проблему тем, что отправил сессионные атрибуты в response сервлета следующим образом:
PrintWriter out = httpServletResponse.getWriter();
String page = PagesManager.getProperty("page.languageEditorCultures");
Map<String, String> attributes = new HashMap<>();
attributes.put(
"cultures", CommonUtils.convertListOfObjectsToJson(foundLanguage.getCultures())
);
Response response = new Response(page, attributes);
String jsonResponse = CommonUtils.convertObjectToJson(response);
out.print(jsonResponse);
А на странице JSP создал элементы с помощью JQuery и вставил туда сессионные атрибуты
(Response мой кастомный класс, который имеет поля pageName и attributes)