【问题标题】:Access session attributes in javascript在 javascript 中访问会话属性
【发布时间】:2019-05-18 21:00:03
【问题描述】:

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

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

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

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

如果我使用:

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

这将在加载页面时得到解决(在会话甚至使用属性更新之前)并且两者都显示为空。

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

【问题讨论】:

  • 如果你使用 node.js,你应该标记这个问题 node.js。如果你使用 node.js 的请求库,你应该用 request 标记它。至于您的实际问题,在客户端显示服务器上发生的事情的进度条比它的价值更麻烦。

标签: javascript ajax model-view-controller


【解决方案1】:

${currentPageNumber} 将访问属性

【讨论】:

  • 请提供更多关于在哪里包含它以及如何使用它的上下文。
  • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。您可以在帮助中心找到更多关于如何写好答案的信息:stackoverflow.com/help/how-to-answer。祝你好运?
【解决方案2】:

你不能直接得到它。因为 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;
    }
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 2014-01-05
    相关资源
    最近更新 更多