有人可以告诉我如何将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
的值。
答案 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)请求向服务器发送值的其他机制很少,但我不确定您是否也在查看这些内容。