如何将javascript变量分配给jsp或jstl

时间:2011-06-15 06:28:13

标签: javascript jsp jstl

有人可以告诉我如何将javascript变量分配给jsp请求或jsp会话。

我正在做这样的事情

此处deletedRows是隐藏字段。

var del=45;
document.getElementById("deletedRows").value=del
alert(document.getElementById("deletedRows").value);
<%String del_values = request.getParameter("deletedRows");%>
<%request.getSession().setAttribute("del_rows", del_values);%>

我的servlet中没有得到del的值。

2 个答案:

答案 0 :(得分:1)

您可以使用request.getParameter("fieldname");在JSP中访问从浏览器提交的任何表单字段,包括隐藏字段。可以以相同的方式访问查询字符串参数。

确保您的表单字段指定了name属性,因为该名称(而不是id属性)将成为服务器端代码中的参数名称。

您已经在问题中显示的一小部分代码中完成了什么,即将隐藏的表单字段设置为具有JavaScript变量的值,应该允许提交该值然后在服务器中访问 - 边码。但是,如果没有看到至少一些表单HTML,特别是隐藏字段的定义,很难理解为什么它不起作用。它也有助于了解如何提交。 (我假设 正在提交:如果你试图让所有代码在服务器上运行它将无法工作,因为JavaScript被服务器视为文档内容,它没有被执行。再一次,如果没有看到更多周围的JSP,我无法真正告诉你如何使用该代码。)

更新:自从我开始输入答案后,我发现您的代码已经格式化了。您不希望服务器上运行所有五行吗? JavaScript代码仅在呈现页面后在客户端浏览器上运行。 <% %>之间的Java代码在页面到达浏览器之前在服务器上执行,因此根本无法访问JavaScript。不在<% %>标签中的任何内容都只是按原样发送到浏览器 - servlet不会与它进行交互。

答案 1 :(得分:1)

JSP在服务器上编译。所有客户端获取的是JSP的“输出”:HTML,CSS和Javascript。

在之后,Javascript会被执行。这意味着当javascript执行时,JSP中的所有内容都成为 HTML等。您希望将此视为Java / JSP部分已“完成”,现在HTML / Javascript部分将接管。

现在,您希望将通过Javascript计算/操作的某些值传递回服务器。 (我认为这就是你说“为jsp请求或jsp会话提供javascript变量”的意思

为此,您必须将页面提交给服务器,这些值应该是提交表单的一部分。

您可能已经在某些HTML元素中使用了这些值(例如<input><select>),否则您可以创建隐藏元素并使用值填充这些元素,然后再提交<form>

在您提供的代码中,您正确填充隐藏字段,但您必须检索servlet中的值,而不是JSP本身。此外,请确保提交<form>中的隐藏字段并提交该表单。

表单提交(到servlet)后,可以通过request.getParameter在servlet中检索值。

使用URL参数或异步(AJAX)请求向服务器发送值的其他机制很少,但我不确定您是否也在查看这些内容。