1

我刚来这地方。我正在尝试通过使用隐藏字段并提交表单将 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 对象的值。

然后我想使用 scriptlet (<%request.setAttribute%>) 将它提交到另一个表单,但是如何?我意识到通过使用 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) 设置隐藏字段的值,并将它们提交到其他表单。

4

2 回答 2

2

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

你可以

  1. 使用方法AJAX并发送所需的数据POST/GET,然后将其设置为会话。
  2. 或者您可以使用cookie.
于 2012-10-04T03:32:08.500 回答
1

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

于 2012-10-04T03:44:40.717 回答