java/jsp代码中的javascript

javascript inside java/jsp code

本文关键字:javascript 代码 jsp java      更新时间:2023-09-26

我已经在中编写了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,它都会在alertbox中显示id的值,并且它还会使id为mytext的文本框变为禁用。

因此,当我在不传递参数的情况下执行myjsp.jsp页面时,它会将输出显示为TRYnull,但当我将值传递到id时,它不会显示任何内容,甚至不会显示alertbox。任何想法!!

我的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,但几乎可以肯定会产生错误(因此不会显示alert),因为这里foo是一个很可能是undefined的变量。

如果你在JavaScript控制台中查看一下,你可能会看到以下内容:

Uncaught ReferenceError: foo is not defined

你需要做的是在你的scriptlet周围加引号,这样id的值就被视为String,而不是变量,即

alert("TRY <%= id %>");