在JSP转发之前显示JavaScript警报

时间:2012-11-09 12:28:00

标签: javascript jsp

我正在尝试在执行转发之前在jsp页面正文中用javascript警告消息并且它没有被执行。

这是代码

<%
...
out.write("<script type='text/javascript'>\n");
out.write("alert( " + "' Hello '" + ");\n");
out.write("</script>\n");

request.getRequestDispatcher("secondpage.jsp").forward(request, response);
%>

这里我想在将控件传递给另一个jsp页面之前提醒消息。我怎么能这样做。 如果我删除转发部分,警报消息将显示在警告框中。

2 个答案:

答案 0 :(得分:3)

forward替换了未发送到浏览器的页面内容。

由于浏览器甚至没有收到您编写的脚本,因此无法执行它。

假设您希望用户在重定向前一秒钟看到警报,您可以这样做:

<%
out.write("<script type='text/javascript'>\n");
out.write("alert(' Hello ');\n");
out.write("setTimeout(function(){window.location.href='secondpage.jsp'},1000);");
out.write("</script>\n");
%>

答案 1 :(得分:2)

为什么你在JSP中通过Java scriptlets 编写JS代码,而JSP本身已经提供了一个很好的模板来编写HTML / JS代码?

无论如何,只需使用JS来执行重定向而不是JSP。您知道,Java / JSP在Web服务器上运行并生成HTML / JS,而HTML / JS仅在webbrowser中运行。 forward基本上替换了请求/响应目标,如果响应未提交,它会丢弃事先写入响应缓冲区的所有内容。

以下是在普通HTML / JS中如何使用它:

<script>
    alert('Hello');
    window.location = 'secondpage.jsp';
</script>

就是这样。看,你根本不需要把它放在一些 scriptlet 丑陋中。只需将其完整地放在JSP文件中即可。