Доступ к атрибутам сеанса в JavaScript - PullRequest
0 голосов
/ 18 декабря 2018

Мне нужна помощь в понимании того, как сделать то, что, как я полагаю, должно быть легко.

В моем контроллере я конвертирую PDF в несколько изображений, и я могу легко получить номер страницы, с которой я работаю, иобщее количество страниц, которые нужно сделать.Я помещаю оба в сеансе с:

request.getSession().setAttribute("currentPageNumber", currentPageNumber);
request.getSession().setAttribute("totalPagesNumber", totalPagesNumber);

В представлении я хотел бы показать индикатор выполнения, зная эти значения, делая что-то вроде CeilingOf ((currentPageNumber / totalPagesNumber) * 100), но я нене знаю, как непрерывно получать эти обновленные значения.

Если я использую:

'<%= request.getSession().getAttribute("currentPageNumber")%>'

, это будет решено загрузкой страницы (до того, как сессия даже будет обновлена ​​с атрибутами) иоба отображаются нулевыми.

Что мне нужно сделать, чтобы получить доступ к этим значениям в представлении?Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 18 декабря 2018

Вы не можете получить это напрямую.Поскольку JavaScript выполняется на стороне клиента (в браузере), а данные сеанса - на сервере.

Некоторые способы использования переменных атрибута сеанса в JavaScript:

  • сохранение скрытого поля вводапеременная в качестве значения и чтение ее через DOM API
  • атрибут данных HTML5, который вы можете прочитать через DOM
  • , сохранив его как cookie и получив доступ к нему через JavaScript
  • вставка его непосредственно в код JS, если он у вас встроен

В JSP:

<input type="hidden" name="totalPagesNumber" value="${sessionScope.totalPagesNumber} />

Javascript:

var inputs = document.getElementsByTagName("input"), len = inputs.length, i, totalPagesNumber;
for (i = 0; i < len; i++) {
    if (inputs[i].name == "totalPagesNumber") {
        totalPagesNumber = inputs[i].value;
        break;
    }
}

Вот я циклвсе входные скрытые поля, чтобы вы могли получить все значения в одном цикле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...