当我尝试访问服务器端的GreetingServiceImpl类并尝试在客户端使用它的功能时,我收到了错误。
错误:没有源代码可用于com.demo1.server.GreetingServiceImpl类型;你忘了继承一个必需的模块吗?
这是GreetingServiceImpl:
公共类GreetingServiceImpl扩展了RemoteServiceServlet实现 GreetingService {
public LinkedList<String> greetServer() throws IllegalArgumentException {
// Verify that the input is valid.
LinkedList<String> list = new LinkedList<String>();
try {
File file = getLog();
Parse parse = new Parse(file);
list = parse.callControlRequest();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
public File getLog() throws IOException {
//doing something
}
}
我试图在客户端使用它,如:
GreetingServiceImpl resultList = new GreetingServiceImpl(); //这是我收到错误的地方
greetingService.greetServer(new AsyncCallback&gt;(){
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated method stub
dialogBox
.setText("Remote Procedure Call - Failure");
dialogBox.center();
}
@Override
public void onSuccess(LinkedList<String> result) {
result=resultList.greetServer(); // this is where I am trying to get the output of it
}
});;
}
答案 0 :(得分:1)
您不能在客户端使用服务器端的类。要使用GreetingService,您应该实例化它的异步部分:
GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
然后你可以使用greetingService变量调用GreetingServiceImpl中的方法 - 你不能直接在客户端使用或引用GreetingServiceImpl,所以行
GreetingServiceImpl resultList = new GreetingServiceImpl();
是非法的 - 将其删除。
此外,您可以生成默认的gwt应用程序,看看它是如何完成的,或者查看gwt库提供的DynaTable样本:gwt-dir / samples / DynaTable。