在JSP中将JavaScript变量赋值给Java变量

21

你好,

我想将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>

4
如果您了解JSP的工作原理,就会知道Java部分在网页呈现之前就已经在服务器端执行了。这意味着在任何JavaScript有机会执行之前,它已经被执行过了。因此,您需要重新考虑您正在尝试做什么。 - d-live
可能是重复问题:http://stackoverflow.com/questions/1944330/assigning-values-from-javascript-to-java-variable - Alex K
实际上,http://stackoverflow.com/questions/11672500/can-i-build-a-rhino-javaadapter-in-java-using-a-scriptableobject - user2754112
这是一个老问题,但那些简单地说“你不能”之类的人都是错的。是的,你可以,这取决于你的环境,也许我正在使用 JSP、JSP 或其他什么技术,为什么要说“你不能”呢?很有趣... - user2024778
7个回答

21

JavaScript运行在浏览器中,而Java代码是服务器端的东西,所以你不能简单地这样做。

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

HTML

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

确保这个字段位于 <form> 标签内。

Javascript

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

在服务器上,你可以通过request获取这个部分。


嗯,我明白了。因为总的来说,我想做的就是在JSP中有一个HTML表单,并且通过onClick事件触发javascript方法,然后返回一个变量。然后那个变量可以随着其余的表单输入值一起发送...所以肯定没有办法做到这一点了吗? - user818700
您可以将其设置在某些隐藏字段中,然后通过表单提交发送。 - jmj
类似这样:<input type="hidden" value="returnVariable()" name="javaScriptVariable" />? - user818700

1

1

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

希望能帮到你。


1

JavaScript在客户端上运行,而JSP在服务器端上运行。因此我可以说这是不可能的。


0

我认为除非你将JavaScript变量的值传递到URL上,否则没有其他方法可以实现这一点,但这是一个丑陋的解决方法。


0

你不能这样做...因为JSP是在服务器端编译和转换成HTML,而JavaScript是在客户端执行的。如果你想进一步使用它,你可以将值设置为隐藏的HTML元素并在请求中发送到Servlet。


啊,那太完美了,我可以这样做,它仍然解决了我的问题。所以我只需像这样在隐藏的输入类型中设置值:<input type="hidden" value="returnVariable()" name="javaScriptVariable" />? - user818700
是的,你说得对,你必须在方法本身中设置该元素的值,并将该元素保留在表单内,以便在提交表单时将其添加到URL中。 - dku.rajkumar

0

由于JavaScript是客户端语言,而JSP是服务器端语言。

因此,JavaScript只有在到达浏览器时才会执行, 但Java在服务器上执行。 因此,Java不知道JavaScript变量的值。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接