Ответ 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}' />";
Больше информации: