我正在尝试在执行转发之前在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页面之前提醒消息。我怎么能这样做。 如果我删除转发部分,警报消息将显示在警告框中。
答案 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文件中即可。