我使用Eclipse在GWT 2.3中编码。虽然我有编码经验,但它仅限于客户端。我当前的项目涉及创建一个映射程序,该程序从Excel工作表中获取一个点列表并将它们放在预定义的图像上。现在,我连接了我的servlet和客户端代码,我已经知道了如何读取Excel文件。
我当前的问题:我使用开发模式在Firefox上加载应用程序时出现以下错误:
JSNI方法“
int
”返回了@com.google.gwt.user.client.rpc.impl.ClientSerializationStreamReader::readInt()
以外的其他内容:未定义类型的JS值,预期int
开发模式的控制台在我运行时没有给我任何错误,它确实告诉我有一个[WARN]有两件我没有使用的东西(我错误命名的图像,但不会加载)。< / p>
目前,我的代码如下:
在我的Floor.java
客户端代码中:
MyServiceAsync service = (MyServiceAsync) GWT.create(MyService.class); AsyncCallback<String> callback = new AsyncCallback<String>() {
public void onFailure(Throwable caught) {
printerModel.setText("FAILED");
String details = caught.getMessage();
printerModel.setText(details);
}
@Override
public void onSuccess(String result) {
//I purposefully have this as an empty method so I could figure out the error
}
};
service.readFile("PrinterList.xls", callback);
在我的MyService.java
:
>public String readFile(String s);
In `MyServiceImpl.java`:
>public String readFile(String s) {
// TODO Auto-generated method stub
try {
} catch (Exception e) {
}
return "foo";
}
我的AsyncCallback
类型为String
,这似乎导致错误。我的客户端代码调用的方法此时返回单个String,“fubar”(为简单起见)。我认为字符串是自动serializable,但我不确定。那么,如何让这个错误消失呢?如何使服务器代码序列化?
答案 0 :(得分:1)
例外情况基本上是这样的:
客户端试图从数据流中读取对象。根据被调用方法的签名(或其他一些提示),流阅读器期待一个int但却找到了undefined
。
至于String的可串行性,您的假设是正确的。它们是可序列化的,您无需付出任何努力。
如果不查看代码和/或异常跟踪,就很难再说些什么了。
修改强>
你的代码对我来说似乎没问题。您是否有机会混合GWT版本?那就是你用2.3编译你的GWT应用程序,但服务器类路径包含一个旧的GWT jar(反之亦然)。看看: