GWT 2.6 - RequestFactory Locator 找不到类似的域方法

标签 gwt requestfactory

我是 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/

相关文章:

gwt - GWT/GXT 的调试控制台

java - 无法在通过 GWT-RPC 传递到服务器的 ArrayList 中找到对象

android - RequestFactory 失败,返回 "UnexpectedException: No RequestContext for operation LPZEK7DlYkoG1$NQ5MjHlmuRChk="

具有命令模式的 GWT RequestFactory

java - 当实体具有长 ID 时,GWT Requestfactory 实体定位器无法与 Objectify 一起使用

java - gwt uibinder ui :with - calling methods with arguments

gwt - 如何处理来自 GWT 中 TextBox 清除图标的事件?

java - GWT - 基于浏览器的条件编译

java - 为非实体请求实现GWT RequestFactory服务

gwt - 需要帮助将 GWT 库模块打包到 JAR 中