在同一个jsp页面上显示警报消息

时间:2013-09-20 14:27:37

标签: java jsp servlets

我有一个jsp页面,当点击一个按钮将我带到一个servlet。在那个servlet我基本上检查一个条件,如果它成功我将重定向到一个工作正常的新页面。但是当出现错误时,我想在同一页面上显示错误消息而不重新加载/重定向到同一页面。

下面是我尝试的servlet代码片段,但它似乎不起作用,

            if(error){
        if (!response.isCommitted())
            {
                response.reset();
                response.resetBuffer();
            }
            response.setStatus(HttpServletResponse.SC_NO_CONTENT);
            response.setContentType("text/html"); 
            PrintWriter pw = new PrintWriter(response.getOutputStream()); 
            pw.write("<html><body><script>alert('Error')</script></body></html>");
            pw.close(); 
            response.getOutputStream().flush();
            response.getOutputStream().close();
            response.flushBuffer();
        return;
        }

我甚至将 SC_no_content 状态设置为避免重新加载页面或某些内容,但是警告消息没有出现,所以永远都会出现..请建议。

2 个答案:

答案 0 :(得分:1)

您需要了解应用程序的流程。

  1. 您单击了一个向服务器发送 HTTP请求的按钮。
  2. 您的Servlet处理请求。

    • 如果它有效,您发送 HTTP响应,重定向到另一个页面(或者您可以执行转发,其中包含由jsp生成的HTML的HTTP响应)。
    • 如果无效,则发送包含以下内容的 HTTP响应

    <html><body><script>alert('Error')</script></body></html>

  3. 如果您(正确)在服务器上进行验证,您可以使用javascript异步发送该请求,并根据结果采取措施。

答案 1 :(得分:0)

如果您使用servlet验证数据,则需要重新加载页面。

无论如何都有一个解决方法 通过ajax请求将表单发布到空白目标,解析结果,如果错误通过javascript显示消息,则没有错误通过javascript执行重定向

尝试检查此jquery plugin

另一种方法是使用cometD,这样您就可以将服务器代码的响应发送到javascript代码,而无需在客户端上发布帖子