访问JavaScript中的会话属性

时间:2018-12-18 12:32:46

标签: javascript ajax model-view-controller

我需要一些帮助来了解如何做我认为应该很容易的事情。

在我的控制器中,我正在将PDF转换为多个图像,并且我可以轻松地获取要处理的页数和需要处理的总页数。我将两者都放在会议上:

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

在视图上,我想显示一个知道这些值的进度条,执行类似CeilingOf(((currentPageNumber / totalPagesNumber)* 100)的操作,但我不知道如何持续获取这些更新的值。

如果我使用:

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

此问题将在页面加载之前解决(甚至在会话使用属性进行更新之前),并且都显示为空。

我需要怎么做才能在视图上访问这些值?非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您不能直接得到它。因为JavaScript是在客户端(浏览器)上执行的,而会话数据是在服务器上执行的。

在JavaScript中使用会话属性变量的一些方法:

  • 一个隐藏的输入字段,将变量存储为变量的值,并通过DOM API读取该变量
  • 可以通过DOM读取的HTML5数据属性
  • 将其存储为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;
    }
}

在这里,我循环所有输入的隐藏字段,以便您可以在一个循环中获得所有值。