GWT 2.6 - RequestFactory Locator 找不到类似的域方法
Posted
技术标签:
【中文标题】GWT 2.6 - RequestFactory Locator 找不到类似的域方法【英文标题】:GWT 2.6 - RequestFactory Locator Could not find domain method similar to 【发布时间】:2014-06-18 06:29:27 【问题描述】:我是 GWT 的新手,并且使用带有 RequestFactory 的 2.6 版,但我遇到了 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
类(我真的不想这样做),它就可以正常工作了。
我尝试用谷歌搜索并找到了几个相关的帖子,但这些问题都没有真正适用于我。有人可以帮帮我吗?
【问题讨论】:
【参考方案1】:如果MyRequest
中的方法在MyService
中有对应的域,那么@Service
应该指向MyService.class
,而不是MyModel.class
。
您使用ServiceLocator
的事实告诉RequestFactory 它应该寻找实例方法而不是静态方法,并且将使用ServiceLocator
来获取@Service
指向的服务实例。如果您在 MyModel
中有匹配的 find
方法(即编译时验证将通过),那么您将在运行时遇到错误,因为您的 ServiceLocator
返回的 MyService
实例不能转换为您在 @Service
注释中引用的 MyModel
。
【讨论】:
以上是关于GWT 2.6 - RequestFactory Locator 找不到类似的域方法的主要内容,如果未能解决你的问题,请参考以下文章
什么时候应该使用 RequestFactory 与 GWT-RPC?
GWT/AppEngine:设计 RequestFactory 工作流以更好地处理异常