在同一个jsp上从javascript访问java变量

时间:2013-09-24 19:46:58

标签: java jsp

是否可以从同一页面上的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

1 个答案:

答案 0 :(得分:23)

由于您尝试使用未定义的变量,因此无效。代码生成如下:

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

没有意义,对吗?因此,为了使这项工作,你应该在使用之前声明变量(一如既往):

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

仍然,使用scriptlet 非常气馁。假设您正在使用JSTLExpression 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}' />";

更多信息: