在GWT UiBinder中向自定义小部件添加项目

3

我在GWT中创建了一个自定义表单下拉小部件。基本上它是一个带有一些附加功能的列表框。我想使用UiBinder向列表框添加项目。如果只是一个gwt ListBox,我可以

<g:ListBox>
  <g:item>Test</g:item>
  <g:item>Test</g:item>
</g:ListBox>

一切都很好。为了达到相同的效果,我希望我的自定义小部件也能接受添加项目,例如:

<my:FormDropdown>
  <g:item>Test</g:item>
  <g:item>Test</g:item>
</my:FormDropdown>

我不需要它成为我添加的g:item,以防需要制作自定义内容。我认为我需要使用GWT UiBinder工厂方法,但我在GWT UiBinder文档中找不到讨论此问题的位置。

1个回答

2
在UIBinder XML的顶部,为<ui:Binder .... >标签添加一个命名空间声明,如下所示:
xmlns:my="urn:import:com.yourcompany.yourproject.widgets"

您正在添加一个XML命名空间,该命名空间指向包含FormDropdown.java的包。

因此,如果您的FormDropdown在以下路径中:com.yourcompany.yourproject.widgets.FormDropdown.java

那么您的UI Binder XML应该如下所示:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<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.yourcompany.yourproject.widgets">
    <ui:style>
    .important {
        font-weight: bold;
    }
    </ui:style>
    <g:HTMLPanel>

        <my:FormDropdown>
            <g:item>Test</g:item>
            <g:item>Test</g:item>
        </my:FormDropdown>

    </g:HTMLPanel>
</ui:UiBinder>

我该如何让我的下拉菜单(dropdown)添加g:items或类似的内容? - Michael
@Michael 对不起,我误解了你的问题。你要找的是这个:https://dev59.com/A1HTa4cB1Zd3GeqPS5cL#13846858GWT ListBox使用元素解析器实现(请参见com.google.gwt.uibinder.elementparsers.ListBoxParser)。 - Churro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接