【问题标题】:GWT 2.6 - RequestFactory Locator Could not find domain method similar toGWT 2.6 - RequestFactory Locator 找不到类似的域方法
【发布时间】: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 类(我真的不想这样做),它就可以正常工作了。

我尝试用谷歌搜索并找到了几个相关的帖子,但这些问题都没有真正适用于我。有人可以帮帮我吗?

【问题讨论】:

    标签: gwt requestfactory


    【解决方案1】:

    如果MyRequest 中的方法在MyService 中有对应的域,那么@Service 应该指向MyService.class,而不是MyModel.class

    您使用ServiceLocator 的事实告诉RequestFactory 它应该寻找实例方法而不是静态方法,并且将使用ServiceLocator 来获取@Service 指向的服务实例。如果您在 MyModel 中有匹配的 find 方法(即编译时验证将通过),那么您将在运行时遇到错误,因为您的 ServiceLocator 返回的 MyService 实例不能转换为您在 @Service 注释中引用的 MyModel

    【讨论】:

      猜你喜欢
      • 2011-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多