java - 如何在 GWT 中将自定义 HTML 元素注册为小部件

标签 java android gwt polymer mgwt

大家好,有人知道如何将自定义 html 元素注册为 GWT 小部件 uiBinder 并直接使用它们而不是在 HTMLPanel 中使用吗。

例如如果我使用 Google Polymer在我的 mgwt项目我使用自定义 html 元素作为

                 <g:HTMLPanel >
                    <paper-shadow class="{style.card}">
                        <mgwt:touch.TouchPanel ui:field="touchPanel">
                            <mgwt:panel.flex.FlexPanel orientation="VERTICAL" alignment="CENTER">
                                <g:Image url="{global.getDirection.getSafeUri.asString}" />
                                <g:HTMLPanel>Take me to Deal</g:HTMLPanel>
                            </mgwt:panel.flex.FlexPanel>
                        </mgwt:touch.TouchPanel>
                    </paper-shadow>
                </g:HTMLPanel>

我想注册/创建 paper-shadow 作为自定义小部件,这样我就可以编写代码以便于处理事件

                <polymer:paper-shadow class="{style.card}">
                    <mgwt:touch.TouchPanel ui:field="touchPanel">
                        <mgwt:panel.flex.FlexPanel orientation="VERTICAL" alignment="CENTER">
                            <g:Image url="{global.getDirection.getSafeUri.asString}" />
                            <g:HTMLPanel>Take me to Deal</g:HTMLPanel>
                        </mgwt:panel.flex.FlexPanel>
                    </mgwt:touch.TouchPanel>
                <polymer:paper-shadow>

最佳答案

据我所知,您无法轻松添加 UiBinder 能够理解的新自定义元素。你可以加一到your custom widget , 不过。

您会注意到 GWT 允许在这些自定义元素上使用自定义属性,例如 DockLayoutPanel :

<g:DockLayoutPanel unit='EM'>
  <g:north size='5'>
    <g:Label>Top</g:Label>
  </g:north>
  <g:center>
    <g:Label>Body</g:Label>
  </g:center>
  <g:west size='192'>
    <g:HTML>
      <ul>
        <li>Sidebar</li>
        <li>Sidebar</li>
        <li>Sidebar</li>
      </ul>
    </g:HTML>
  </g:west>
</g:DockLayoutPanel>

注意 <g:north size='5'>元素 - 如果你查看 DockLayoutPanel的源代码,你会看到它是由这个方法处理的:

public void addNorth(Widget widget, double size) {
    insert(widget, Direction.NORTH, size, null);
}

没有@UiChild注释和一个额外的参数意味着幕后发生了一些“神奇”的事情。确实,有一个 DockLayoutPanelParser处理这种特殊情况的类。你会注意到它实现了 ElementParser - 不幸的是,it's not possible to "plug in" your own ElementParser .

有一个项目,gwt-customuibinder ,它试图回避这个限制,但它已被弃用为较新的(2.5+?)版本的 GWT:

Please note that with the newer releases of GWT, this project is now deprecated as many of the techniques used to add custom element parsers to UiBinder are now not possible.

关于java - 如何在 GWT 中将自定义 HTML 元素注册为小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27287348/

相关文章:

java - 如何从 RequestBody 向自定义注释中注入(inject)数据

java - jvm 未翻译的部分

Netbeans 7 如何标记 jdk

android - 如何终止堆栈中的所有 Activity

android - 从 Kotlin 协程访问类变量

带复选框的 java gwt celltable

java - 带有 Google GWT 插件的 Spring Tool Suite 在 Java2HTMLEntityReader 中引发错误

java - Java 类路径中的重复问题

android - 应用程序未进入 ICS 市场 android

java - 从 bitbucket 导入项目时 Gwt-servlet.jar 出现错误