JSP - 会话未定义?

时间:2015-09-30 12:41:35

标签: javascript java jsp session

我试图在两个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");

3 个答案:

答案 0 :(得分:3)

您正试图在session标记内使用<script language="javascript">,但在那里无效。在scriptletjstl标记内使用它。

  

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>

答案 2 :(得分:0)

 <%HttpSession sess = request.getSession(true);
 sess.setAttribute("test", "some value");%>

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

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