Присвойте переменную JavaScript переменной Java в JSP - PullRequest
20 голосов
/ 25 ноября 2011

Привет,

Я пытаюсь присвоить значение переменной 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>

Ответы [ 7 ]

21 голосов
/ 25 ноября 2011

Java-скрипт воспроизводится в браузере, где java-код является серверной вещью, поэтому вы не можете просто сделать это.

Что вы можете сделать, это отправить вычисленную переменную из javascript на сервер путем отправки формы, или с помощью параметра URL, или с помощью вызовов AJAX, а затем вы можете сделать его доступным на сервере

HTML

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

убедитесь, что это поле находится под <form>

Javascript

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

на сервере вы получите это как часть request

1 голос
/ 25 ноября 2011

JavaScript запускается на стороне клиента, а JSP - на стороне сервера. Поэтому я могу сказать, что это невозможно.

1 голос
/ 25 ноября 2011

Ответ: нельзя.Java (в вашем случае JSP) - это язык сценариев на стороне сервера, что означает, что он компилируется и выполняется перед всем кодом JavaScript.Вы можете назначить переменные javascript переменным JSP, но не наоборот.Если возможно, вы можете сделать так, чтобы переменная появлялась в QueryString или передавала ее через форму (через скрытое поле), размещала ее и извлекала переменную через JSP таким образом.Но это потребует повторной отправки страницы.

Надеюсь, это поможет.

1 голос
/ 25 ноября 2011

Вам нужно прочитать кое-что о жизненном цикле 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

0 голосов
/ 25 ноября 2011

Поскольку JavaScript - это сторона клиента, а JSP - сторона сервера.

Таким образом, Javascript не выполняется до тех пор, пока не попадет в браузер, но Java выполняется на сервере.Итак, Java не знает значения переменной JavaScript.

Однако вы присваиваете значение переменной Java переменной JavaScript.

0 голосов
/ 25 ноября 2011

вы не можете сделать это .. потому что jsp скомпилирован и преобразован в html-сторону сервера, тогда как javascript выполняется на стороне клиента.Вы можете установить значение для скрытого html-элемента и отправить сервлету в запросе на тот случай, если вы захотите использовать его для дальнейшего использования

0 голосов
/ 25 ноября 2011

Я думаю, что нет никакого способа сделать это, если вы не передадите значение переменной JavaScript в URL, но это уродливый обходной путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...