我有一个GWT模块,在其中我通过以下方式导航到另一个URL:
Window.Location.assign(url);
导航的url然后由servlet处理,直到这一点,如果resp.sendError方法处理错误
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Failed.");
然后导航到浏览器错误页面。但是我想知道在那里我无法导航到错误页面?即如果出现错误,我可以检查我的GWT代码,然后做一些事情?喜欢重新发送请求等。
谢谢!
答案 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
支持)。