Доступ к переменной java из javascript на том же jsp

Можно ли получить доступ к переменной типа String, определенной в jsp, из javascript на той же странице?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
<title>Insert title here</title>
<script type="text/javascript">  
foo();
function foo()  
{  
var value = "<%=myVar%>";  
alert(value);   
}  
</script>  
</head>
<body>

<%

String myVar="blabla";
%>

</body>

</html>

В eclipse я получаю сообщение об ошибке

myVar cannot be resolved to a variable

Ответ 1

Это не сработает, так как вы пытаетесь использовать неопределенную переменную. Код генерируется следующим образом:

... = myVar;
//...
String myVar = "blabla";

Не имеет смысла, не так ли? Итак, чтобы сделать эту работу, вы должны объявить переменную перед ее использованием (как всегда):

<%
    String myVar="blabla";
%>
<script type="text/javascript">
    foo();
    function foo() {
        var value = "<%=myVar%>";
        alert(value);
    }
</script>

Тем не менее, использование скриптлетов крайне обескуражено. Предполагая, что вы используете JSTL и язык выражений (EL), это можно переписать в:

<c:set name="myVar" value="blabla" />
<script type="text/javascript">  
    foo();
    function foo() {
        var value = "${myVar}";
        alert(value);
    }
</script>

Если ваша переменная имеет символы типа " внутри", тогда этот подход будет скрыт. Вы можете избежать результата, используя <c:out> из JSTL:

var value = "<c:out value='${myVar}' />";

Больше информации: