我是 GWT 的新手,将 2.6 版与 RequestFactory 一起使用,但我遇到了 GWT 验证问题。一旦我开始使用 Locator 和 LocatorService,GWT 就无法在域端找到该方法(在此之前,一切正常,只是为我找到)。
下面是我的实现:
我的请求工厂是这样的:
public interface MyRequestFactory extends RequestFactory {
MyRequest createRequest();
@Service(value = MyModel.class, locator = MyModelServiceLocator.class)
public interface MyRequest extends RequestContext {
Request<MyModelProxy> find(String id);
}
}
我的服务定位器如下所示:
public class MyServiceLocator implements ServiceLocator {
private static MyService serviceInstance;
private static MyService getServiceInstance() {
if (serviceInstance == null) {
serviceInstance = new MyService();
}
return serviceInstance;
}
@Override
public Object getInstance(Class<?> klass) {
return MyServiceLocator.getServiceInstance();
}
}
我的服务看起来像:
public class MyService {
public MyModel find(String id) {
// implementations
}
}
但是 GWT 验证提示无法在域端找到“MyModel find(String)”。但是一旦我将此方法放入 MyModel
类(我真的不想这样做),它就可以正常工作。
我试着四处搜索并找到了一些相关的帖子,但这些问题都没有实际适用于我。有人可以帮帮我吗?
最佳答案
如果MyRequest
中的方法在 MyService
中有他们的域对应项, 然后 @Service
应该指向 MyService.class
, 不是 MyModel.class
.
您使用 ServiceLocator
的事实告诉 RequestFactory 它应该寻找实例方法而不是静态方法,并将使用 ServiceLocator
获取 @Service
指向的服务实例.如果你有匹配的 find
MyModel
中的方法(即编译时验证会通过),那么你会在运行时遇到错误,因为 MyService
ServiceLocator
返回的实例无法转换为 MyModel
你在 @Service
中提到的注释。
关于GWT 2.6 - RequestFactory Locator 找不到类似的域方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24278475/