我已经在里面写了javascript代码
myjsp.jsp
<%
try {
String id=request.getParameter("id");
%>
<script type="text/javascript" >
alert("TRY"+ <%=id %>);
document.getElementById("mytext").readonly="readonly";
</script>
<%
} catch (Exception e) {
%>
<script type="text/javascript" >
alert("CATCH"+<%=e%>);
</script>
<%
}
%>
因此,每当将值传递到 id
时,它都会将 id
的值显示到警报框中,并且还会创建 id 为 < strong>mytext 将变为禁用。
因此,当我执行 myjsp.jsp 页面而不传递参数时,它将输出显示为 TRYnull,但是当我将值传递到 id
那么它不会显示任何内容,甚至没有显示警报框。任何想法!!
我的jsp页面
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%
try {
String id=request.getParameter("id");
%>
<script type="text/javascript" >
alert("TRY"+ "<%=id %>");
alert(document.getElementById("mytext"));
</script>
<%
} catch (Exception e) {
%>
<script type="text/javascript" >
alert("CATCH"+<%=e%>);
</script>
<%
}
%>
<input id="mytext" name="mytext" />
</body>
</html>
最佳答案
发生这种情况是因为当您未传递 id
的请求参数时,正如您所提到的,它将为 null
。在这种情况下,将生成以下 JavaScript:
alert("TRY" + null);
这是有效的 JavaScript,因此这就是您看到 TRYnull
的原因。
但是,如果您传入 id
请求参数,则会生成以下 JavaScript:
alert("TRY" + foo);
虽然这在语法上是有效的 JavaScript,但几乎肯定会产生错误(因此不会显示 警报
),因为这里 foo
是一个变量,很可能未定义
。
如果您查看 JavaScript 控制台,您可能会看到类似以下内容的内容:
Uncaught ReferenceError: foo is not defined
您需要做的就是在 scriptlet 周围加上引号,以便将 id
的值视为 String
而不是变量,即
alert("TRY <%= id %>");
关于java/jsp 代码中的 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617676/