我在DevMode中有这个工作代码但是当我在编译代码(实时)中运行它时,它在Javascript浏览器控制台中抛出一个错误:
代码:
MyService service = GWT.create(MyService.class);
// This works
service.createStuff(title.getText(), content.getText(), new MethodCallback<MyModel>() {
@Override
public void onSuccess(Method method, MyModel resp) {
GWT.log("Response from server: " + resp);
}
@Override
public void onFailure(Method method, Throwable exception) {
GWT.log(exception.getMessage());
}
});
// This does not work
service.readStuff(id, new MethodCallback<MyModel>() {
@Override
public void onSuccess(Method method, MyModel model) {
}
@Override
public void onFailure(Method method, Throwable exception) {
}
});
错误:
com.google.gwt.core.client.JavaScriptException: (TypeError): Cannot call method 'ef' of null
at Unknown.nn(StackTraceCreator.java:168)
at Unknown.tl(StackTraceCreator.java:421)
at Unknown.SU(Exceptions.java:29)
at Unknown.Hjb(SubmittedPage.java:91)
at Unknown.qlb(AbstractRequestCallback.java:72)
at Unknown.Nu(Request.java:287)
at Unknown.qv(RequestBuilder.java:395)
at Unknown.anonymous(XMLHttpRequest.java:287)
at Unknown.Im(Impl.java:168)
at Unknown.Lm(Impl.java:214)
at Unknown.anonymous(Impl.java:57)
我怎么能至少调试这类问题?
答案 0 :(得分:2)
首先,您可以在“漂亮”模式下编译为javascript,这不会产生混淆的javascript。在调试之后,浏览器中的javascript是微不足道的。
使用Mojo的Maven GWT插件,可以通过以下行完成:
mvn gwt:compile -Dstyle=PRETTY
然而,在我看来,这与配置有关。也许某种注射变坏或没有进行......
答案 1 :(得分:0)
首先,在模式中编译js。但是,如果您不了解GWT编译器的详细信息,则可能很难扫描已编译的代码并猜测错误发生的位置。
以愚蠢的方式做这件事可能更容易。注释并部署,直到您注释掉,从而找到失败的行!因为我不了解GWT编译器,所以我会做...