gwt - 如何使用 uiBinder 将复合小部件嵌套到主 ui.xml 文件中?

标签 gwt widget uibinder

我的任务是将复合小部件添加到主 ui.xml 文件中,但由于某种原因无法正常工作。这是我的小部件代码:

public class MyClass extends Composite {
    @UiTemplate("MyClass .ui.xml")
    interface MyClassUiBinder extends UiBinder<Widget, MyClass > {
    }

    private static MyClassUiBinder uiBinder = GWT.create(MyClassUiBinder.class);

    @UiField Label label;

    public MyClass() {
        initWidget(uiBinder.createAndBindUi(this));
    } ...

然后在我的主 viewImpl.ui.xml 类中: 我声明类包:

 ... xmlns:u="urn:com... client.view">

然后是小部件本身:

<g:HTMLPanel ui:field="mainPanel" styleName="{style.mainPanel}">
<table align="center">
<tr>
    <td align="center">
        <u:MyClass/>
    </td>
</tr>

我也尝试在 viewImpl 类中设置一个 ui:field 声明,但我在编译时抛出了一个错误:

错误] 在@UiField myClass 中,模板字段和所有者字段类型不匹配:com.google.gwt.dom.client.Element 不可分配给 com...client.view.MyClass

当我从 viewImpl 和它编译的 ui.xml 中取出 @UiField 声明时,但是当页面加载时小部件没有显示。

我创建了另一个复合小部件类,并尝试仅使用一个按钮小部件来复制它。

使用 firebug 我看到该元素已添加到主 ui.xml 页面,但它也没有显示,所以我的绑定(bind)不知何故还没有完全完成。

我在这里错过了什么?

最佳答案

我发现了问题,GWT 告诉我我没有正确地进行声明,但错误并没有我希望的那样具有描述性。

在我使用的 main.ui.xml 文件中:

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
 xmlns:g="urn:import:com.google.gwt.user.client.ui"
 xmlns:u="urn:com.abc.client.view">

但是,最后一行应该有 import 这个词:

xmlns:u="urn:import.com.abc.client.view">

这是我找到 answer 的地方.

我希望这对某人有帮助,这花了我很多时间!

关于gwt - 如何使用 uiBinder 将复合小部件嵌套到主 ui.xml 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496969/

相关文章:

html - 任何免费的开源 WebGL 编辑器?

GWT 背景研究 为项目提供帮助!

twitter小部件仅在webapp ajax页面中首次加载?

iOS 14 WidgetKit 不刷新

gwt - 哪个 Google GWT 产品使用 UiBinder?

css - 在GWT中向Panel添加新元素时如何实现平滑的高度过渡?

java - GWT - 设置 TabLayoutPanel 样式的问题

gwt - Spring MVC Maven 目标不适用于 GWT

java - GWT + Postgres 教程

android - 这是什么类型的对象?