首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT exporter强制转换来自GWT.create的异常;尝试将mvp4g与GWT-Exporter一起使用,但GWT.create不起作用

GWT exporter强制转换来自GWT.create的异常;尝试将mvp4g与GWT-Exporter一起使用,但GWT.create不起作用
EN

Stack Overflow用户
提问于 2015-01-25 16:15:31
回答 2查看 144关注 0票数 0

我尝试使用GWT-Exporter,当我复制示例时,它工作得很好。然后我尝试导出一个mvp4g Presenter,下面是我所做的:

代码语言:javascript
复制
@Export()
@Presenter(view = RegisterPluginDisplay.class)
public class RegisterPluginPresenterImpl extends BasePresenter<RegisterPluginView, MyBus implements RootPresenter { ... }

public interface RegisterPluginPresenter extends Exportable { ... }

//then in the start event I said:
ExporterUtil.exportAll();

它给了我这个错误:

代码语言:javascript
复制
Uncaught java.lang.AssertionErrorcom_mvp4g_client_Mvp4gModuleImpl_com_mvp4g_client_Mvp4gModuleGinjector_com_mvp4g_client_Mvp4gModule…:62 get_Key$type$com$joseph$draw4$client$presenter$RegisterPluginPresenterImpl$_annotation$$none$$_0_g$com_mvp4g_client_Mvp4gModuleImpl_com_mvp4g_client_Mvp4gModuleGinjectorImpl.java:34 getcom_joseph_draw4_client_presenter_RegisterPluginPresenterImpl_0_g$Mvp4gModuleImpl.java:101 createAndStartModule_0_g$Mvp4gEntryPoint.java:35 onModuleLoad_5_g$com_00046joseph_00046draw4_00046Draw4JUnit__EntryMethodHolder.java:3 init_2_g$ModuleUtils.java:44 initializeModules_0_g$Impl.java:247 apply_0_g$Impl.java:306 entry0_0_g$Impl.java:72 (anonymous function)ModuleUtils.java:55 gwtOnLoad_0_g$Map.java:29 (anonymous function)

我查看了代码,发现GWT.create()在创建presenter时并不成功。我尝试创建一个导出的类,然后在它上面使用GWT.create,然后发现我不能将GWT.create用于实现可导出的任何类,即使我不执行ExporterUtils.exportAll()。Exportable接口的文档说明GWT.create()语句返回一个可导出的。这就解释了类类型转换异常。那么我该如何解决这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2015-01-31 19:46:01

mvp4g使用GIN来创建presenters的实例。GIN使用GWT.create(YourPresenter.class)创建类的实例。

只要您没有任何与YourPresenter类相关的延迟绑定规则,GWT.create就会像Java中的新成员一样工作。

生成器创建不能与mvp4g一起使用的导出器实现。

票数 0
EN

Stack Overflow用户

发布于 2015-02-09 08:22:03

我切换到使用实验性的js interop,仍然得到同样的问题。Mvp4g使用gin来获取演示者。根据the gin wiki的说法,“如果GIN找不到一个类的绑定,它会回退到对该类调用GWT.create()”,以便实例化它。它不能在可导出文件上使用GWT.create,因为GWT.create(可导出文件)返回一个导出器。就像文档所说的那样,您必须绑定类才能使其不使用GWT.create。解决方案是为类添加一个绑定。我只需要在GinModule的configure方法中添加下面这行代码:

代码语言:javascript
复制
bind(MyPresenter.class).toProvider(MyPresenterProvider.class);

然后我必须创建MyPresenterProvider类:

代码语言:javascript
复制
public static class MyPresenterProvider.class implements Provider<MyPresenter> {
      @Override
    public MyPresenter get() {
        return new MyPresenter();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28134510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档