0

我有一个 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状态设置为避免重新加载页面或其他内容,但是警报消息从未出现过……请提出建议。

4

2 回答 2

1

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

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

    • 如果它是有效的,你发送一个重定向到另一个页面的HTTP 响应(或者你可能做一个转发,发送一个包含由 jsp 生成的 HTML 的 HTTP 响应)。
    • 如果它无效,则发送一个HTTP 响应,其中包含:

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

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

于 2013-09-20T14:45:06.857 回答
0

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

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

尝试检查这个jquery 插件

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

于 2013-09-20T14:35:46.810 回答