GWT处理请求错误

时间:2014-10-16 13:40:12

标签: servlets gwt httprequest

我有一个GWT模块,在其中我通过以下方式导航到另一个URL:

 Window.Location.assign(url);

导航的url然后由servlet处理,直到这一点,如果resp.sendError方法处理错误

 resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Failed.");

然后导航到浏览器错误页面。但是我想知道在那里我无法导航到错误页面?即如果出现错误,我可以检查我的GWT代码,然后做一些事情?喜欢重新发送请求等。

谢谢!

1 个答案:

答案 0 :(得分:2)

当你离开你的网络应用程序时就是这样。您应该使用HTTP request still from your webapplication来制作RequestBuilder,而不是使用Window.Location.assign 前面提到的文档示例:

import com.google.gwt.http.client.*;
...

String url = "http://www.myserver.com/getData?type=3";
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, URL.encode(url));

try {
  Request request = builder.sendRequest(null, new RequestCallback() {
    public void onError(Request request, Throwable exception) {
       // Couldn't connect to server (could be timeout, SOP violation, etc.)
    }

    public void onResponseReceived(Request request, Response response) {
      if (200 == response.getStatusCode()) {
          // Process the response in response.getText()
      } else {
        // Handle the error.  Can get the status text from response.getStatusText()
      }
    }
  });
} catch (RequestException e) {
  // Couldn't connect to server
}

请注意,仅当您的servlet和Web应用程序位于同一地址(域,端口,协议)时才会起作用,因为Same Origin Policy。如果不是这种情况,仍然有some options,就像带填充的JSON(GWT通过JsonpRequestBuilder支持)。