是否可以从同一页面上的javascript访问jsp中定义的String类型变量?
<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
答案 0 :(得分:23)
由于您尝试使用未定义的变量,因此无效。代码生成如下:
... = myVar;
//...
String myVar = "blabla";
没有意义,对吗?因此,为了使这项工作,你应该在使用之前声明变量(一如既往):
<%
String myVar="blabla";
%>
<script type="text/javascript">
foo();
function foo() {
var value = "<%=myVar%>";
alert(value);
}
</script>
仍然,使用scriptlet 非常气馁。假设您正在使用JSTL和Expression Language(EL),则可以将其重写为:
<c:set name="myVar" value="blabla" />
<script type="text/javascript">
foo();
function foo() {
var value = "${myVar}";
alert(value);
}
</script>
如果你的变量里面有"
这样的字符,那么这种方法就会失败。您可以使用JSTL中的<c:out>
来转义结果:
var value = "<c:out value='${myVar}' />";
更多信息: