【问题标题】:GWT UIBinding cannot find zero-arg constructorGWT UIBinding 找不到零参数构造函数
【发布时间】:2010-04-12 17:31:43
【问题描述】:

我正在尝试使用新的 GWT 2.0 UIBinder 功能,并且我有一个如下所示的 ui XML:

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:my='urn:import:com.mystuff.mypackage'>
<g:VerticalPanel>
      <!-- other stuff -->
  <my:FileUploadPanel.ValidatingFileUpload styleName="field" ui:field="fileUpload" />
</g:VerticalPanel>

ValidatingFileUpload 是 FileUploadPanel 中包含的一个非静态内部类,它扩展了 FileUpload GWT 类。它有一个显式的零参数构造函数,它简单地调用super()。但是,当 GWT 启动时,我收到此错误:

00:00:18.359 [ERROR] Rebind result 'com.mystuff.mypackage.FileUploadPanel.ValidatingFileUpload' has no default (zero argument) constructors.
java.lang.NoSuchMethodException: com.mystuff.mypackage.FileUploadPanel$ValidatingFileUpload.<init>()

知道这里可能出了什么问题吗?

【问题讨论】:

  • 我无法将 UIBinder 与内部类的小部件一起使用。把内部类拉出来能行吗?
  • 对于它的价值,我得到了我需要的功能,而无需使用 @UiHandler-annotated 方法覆盖 FileUpload 类。所以我想这个特定的问题是没有实际意义的——不过,我想明确地听到使用这样的内部类是否是禁止的。
  • 我认为问题出在非静态内部类。你能把它变成一个静态内部类吗?如果它是一个非静态类,GWT 也必须创建一个外部类的对象(我的猜测),这就是问题所在..

标签: gwt uibinder


【解决方案1】:

非静态内部类需要在其包含类的实例中进行实例化。这会阻止 UiBinder 在需要时实例化它。尝试改用静态嵌套类。

【讨论】:

    猜你喜欢
    • 2020-09-15
    • 2022-09-23
    • 2020-09-26
    • 2016-11-12
    • 1970-01-01
    • 2023-01-02
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多