如何在会话中使用scriptlet存储JavaScript变量

时间:2012-10-04 03:19:07

标签: javascript html jsp

我是新来的。我试图通过使用隐藏字段并提交表单来在会话中存储JavaScript变量:

function populateInput()
{
    rowClicked = true;
    var key = document.getElementById("key").innerText;
    var value = document.getElementById("value").innerText;

    document.getElementById("key2").value = key;
    document.getElementById("value2").value = value;

    var form = document.getElementById("output");
    form.submit();
}

将由以下人员调用:

<html>
     <tr id="row" onclick="populateInput()"
</html>

该对象是从一行中获取值,该行包含两列,一个键和一个值(存储在HashMap中),并将它们传递给另一个jsp,以便它们可以显示在两个文本框中(一个通过单击另一个jsp上的行来获取键和一个值。

我遇到的麻烦是在scriptlet中设置属性。我获取了td元素的innerText,并将其分配给JavaScript中的变量,然后将其传递给HTML DOM对象的值。

然后我想使用scriptlets(&lt;%request.setAttribute%&gt;)将其提交给另一个表单,但是如何?我意识到通过使用scriptlet,你使用的是Java代码,而不是HTML属性。

任何帮助都将受到高度赞赏。

以下是整个表格:

<%if (m != null){%>
    <%for (Map.Entry<String, String> e : m.entrySet()){ %>
<tr id="row" onclick="populateInput()">
<td id="key"><%=e.getKey() %></td>
<td id="value"><%=e.getValue() %></td>
</tr>
<%} %>
<%} %>

我想获取td元素的innerText,将它们存储到vars,key和value中,然后将这些vars存储到以下值:

<input type="hidden" id="key2">
<input type="hidden" id="value2">

我遇到的麻烦是在scriptlet中使用request.setAttribute(“”,obj)设置隐藏字段的值,并将它们提交给另一个表单。

2 个答案:

答案 0 :(得分:2)

您无法使用JavaScript设置会话,原因如Matt Ball的评论中所述。

你可以

  1. 使用AJAX并使用POST/GET方法发送所需数据,然后将其设置为会话。
  2. 或者您可以使用cookie

答案 1 :(得分:1)

你不能直接从javascript存储会话变量,因为你只能在服务器端设置session的值。所以你需要一些AJAX从javascript与服务器通信然后操纵会话值。