在 JSP 中将 JavaScript 变量分配给 Java 变量

Posted

技术标签:

【中文标题】在 JSP 中将 JavaScript 变量分配给 Java 变量【英文标题】:Assign JavaScript variable to Java Variable in JSP 【发布时间】:2012-01-06 06:57:03 【问题描述】:

你好,

我正在尝试将 javascript 变量的值分配给 java 变量。但我不知道如何做到这一点?比如说我有这个:

<html>
<head>
   <script type="text/javascript">
       function return variable()
          var a = "hello";
          return a;
       
   </script>
</head>
<body>

<%
   //The java code
   String b = //how do I get that javascript variable here?
%>

</body>
</html>

【问题讨论】:

如果您了解 jsp 的工作原理,您就会知道 java 部分在服务器端执行before 页面在浏览器中呈现。这意味着在任何 javascript 有机会执行时它已经执行了。所以你需要重新考虑你要在这里做什么。 可能重复:***.com/questions/1944330/… How do I pass JavaScript values to Scriptlet in JSP?的可能重复 其实***.com/questions/11672500/… 老问题但是那些简单地说“你不能”的人都是错的,是的,你可以,这取决于你的环境,也许我正在使用 jsp、jsp 或其他东西,你为什么说“你不能”?有趣.. 【参考方案1】:

我认为没有办法做到这一点,除非你在 URL 上传递 JavaScript var 的值,但这是一个丑陋的解决方法。

【讨论】:

【参考方案2】:

Java 脚本在 Java 代码是服务器端的浏览器上播放,所以你不能简单地这样做。

您可以通过表单提交,或使用 URL 参数或使用 AJAX 调用将计算出的变量从 javascript 提交到服务器,然后您可以在服务器上使用它

HTML

<input type="hidden" id="hiddenField"/>

确保该字段位于&lt;form&gt;

Javascript

document.getElementById("hiddenField").value=yourCalculatedVariable;

在服务器上,您可以将其作为request 的一部分获得

【讨论】:

嗯,我明白了.. 因为总而言之,我正在尝试做的事情。在 JSP 中有一个 HTML 表单,并通过 onClick 事件触发 javascript 方法,然后返回一个变量。然后该变量可以与其余的表单输入值一起发送...所以没有办法做到这一点? 您可以在一些隐藏字段中设置它,然后您可以通过表单提交发送它。 类似这样的东西: ?【参考方案3】:

您需要阅读有关 JSP 生命周期的内容。试试这个:http://en.wikipedia.org/wiki/File:JSPLife.png

JavaScript 在客户端上运行,但是为了更改 jsp,您需要访问服务器。这可以通过 Ajax (http://en.wikipedia.org/wiki/Ajax_%28programming%29) 完成。

这里是一些与 Ajax 相关的链接:http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

【讨论】:

【参考方案4】:

你不能这样做..因为jsp被编译并转换为html服务器端,而javascript是在客户端执行的。 您可以将值设置为隐藏的 html 元素并在请求中发送到 servlet,以防万一您想进一步使用

【讨论】:

啊,太好了,我可以做到,它仍然可以解决我的问题。所以我将像这样设置隐藏输入类型中的值: ? 是的,您是对的,您必须在方法本身中设置此元素的值并将该元素保留在表单中,以便在提交表单时将其添加到 url 中。【参考方案5】:

因为 JavaScript 是客户端,而 JSP 是服务器端。

所以 Javascript 在到达浏览器之前不会执行, 但是 Java 在服务器上执行。 所以,Java 不知道 JavaScript 变量的值。

但是,您将 Java 变量的值分配给 JavaScript 变量。

【讨论】:

【参考方案6】:

答案是你不能。 Java(在您的情况下为 JSP)是一种服务器端脚本语言,这意味着它在所有 javascript 代码之前编译和执行。您可以将 javascript 变量分配给 JSP 变量,但不能反过来。如果可能,您可以让变量出现在 QueryString 中或通过表单(通过隐藏字段)传递它,发布它并通过 JSP 以这种方式提取变量。但这需要重新提交页面。

希望这会有所帮助。

【讨论】:

【参考方案7】:

JavaScript 在客户端触发,JSP 在服务器端。所以我可以说这是不可能的。

【讨论】:

以上是关于在 JSP 中将 JavaScript 变量分配给 Java 变量的主要内容,如果未能解决你的问题,请参考以下文章

为啥在Javascript中将一个对象分配给另一个变量也会改变初始对象[重复]

在Javascript中将多个变量分配给相同的值

如何在 JSP 中将 JavaScript 值传递给 Scriptlet?

在Javascript中将类分配给数组

在 VBA 中将 Word 对象分配给 Variant 变量

在C#中将两个字节变量的加法结果分配给另一个字节变量产生错误,只能分配给int变量[duplicate]