2

我有一个项目执行 2 次 RPC 调用,然后将用户提供的数据保存在数据存储区中。第一个 RPC 调用工作正常,但从第二个开始我总是收到onFailure()消息。如何确定onFailure()触发的原因?我试过caught.getCause()了,但它没有返回任何东西。

feedbackService.saveFeedback(email,studentName,usedTemplates,
    new AsyncCallback<String>() {

    public void onFailure(Throwable caught) {
        // Show the RPC error message to the user
        caught.getCause();
        Window.alert("Failure!");
    }

    public void onSuccess(String result) {
        Window.alert("Saved!");
    }
});
4

3 回答 3

1

Throwable 实例是异常的实例。您可以检查它是否是这样的自定义异常:

if (caught instanceOf CustomException){

或者如果您想显示异常消息,您可以使用 getMessage():

Window.alert("Failure: " + caught.getMessage());
于 2013-01-27T11:12:44.090 回答
0

如果发生错误,GWT-rpc 不容易调试。

最简单的部分是检查异常是否属于StatusCodeException.

  • 状态码 404 表示您指向错误的端点
  • 0 表示,
    • 搜索器无法访问
    • 您无权检查服务器是否可用(X-domain-request)

你可以使用 Chrome-Web-Inspector 来测试 GWT-RPC

您应该能够看到从浏览器到后端的所有调用。

最常见的失败是由于对象的序列化。您必须确保所有 dtransferred 对象都实现java.io.Serializable

于 2013-01-27T11:32:29.073 回答
0

大多数情况下,它只是引发了一个服务器端异常,它会触发该onFailure()方法。

尝试在服务器端设置断点。这应该可以帮助您查明出了什么问题。

于 2013-01-27T16:48:15.193 回答