【问题标题】:JSP - session is undefined?JSP - 会话未定义?
【发布时间】:2015-09-30 21:12:38
【问题描述】:

我试图在两个 jsp 文件之间传递一个变量,但是当我开始使用它们时,我收到一条错误消息,提示“会话未定义”

我正在使用以下内容:

Jsp1:
//following function is called on a button press
function clickAndClose()
{
    session.setAttribute("test", "some value here");

    window.close(); 
}

Jsp2:
<!DOCTYPE html>
<html>
<body>
Show Selected RS Number
    <script language="javascript">
        String number = session.getAttribute("test");
        session.removeAttribute("test");
        document.write(number);
    </script>
</body>
</html>

我在 session.setAttribute 上收到错误的事实让我感到困惑,因为我认为 session 是一个隐式对象(包含?)?

注意:我在 session.setAttribute("test", "some value"); 上遇到错误,说会话未定义,而不是 String text = session.getAttribute("test");

【问题讨论】:

  • session 确实是一个隐式对象。最好显示一些代码以了解发生了什么...
  • Tom 你能不能给我看看jsp
  • 如果我的记忆没有出卖我,完整的签名是 Object getAttribute(String name),你不应该在那里进行演员表吗?
  • 查看更新的问题:)
  • 我仍然缺少一些东西,您添加的代码似乎是 java 和 javascript 的混合体。你确定你没有混合客户端和服务器端的世界吗? AFAIK 没有直接的方法可以从 javascript 访问 Session。

标签: javascript java jsp session


【解决方案1】:

您正在尝试在&lt;script language="javascript"&gt; 标记内使用session,它在那里不可用。在scriptlet 或jstl 标签内使用它。

Javascript在客户端执行,而jsp隐式对象在服务器端可用并执行

【讨论】:

  • 啊,我想这就是我感到困惑的地方!感谢您的帮助,刚刚学习了语言,所以仍在解决问题! +1
【解决方案2】:

你不能直接在 javascript 中访问会话,你可以用类似的东西来欺骗它:

<!DOCTYPE html>
<html>
<body>
Show Selected RS Number
    <script language="javascript">
        var number = '<%= session.getAttribute("test") %>';
        document.write(number);
    </script>
</body>
</html>

【讨论】:

    【解决方案3】:
     <%HttpSession sess = request.getSession(true);
     sess.setAttribute("test", "some value");%>
    

    以上代码将为您提供所需的会话对象。强烈建议使用 EL(表达式语言)和 JSTL 标签。例如,这里你可以使用 EL as

    <td><input type="text" value="${test}" /></td>
    

    【讨论】:

    • first session 是一个隐式对象。所以不需要再次创建它。
    猜你喜欢
    • 1970-01-01
    • 2015-10-31
    • 2016-07-21
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多