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

2022-09-04 07:24:49

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

在日食中,我收到错误

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>

如果您的变量具有类似内部的字符,则此方法将失败。您可以使用从 JSTL 转义结果:"<c:out>

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

更多信息:


答案 2