【问题标题】:@UiChild Extra "addChildObject" XML tags required?@UiChild 需要额外的“addChildObject”XML 标签吗?
【发布时间】:2013-10-15 16:42:47
【问题描述】:

我最近加入了 GWT,对它很满意。

@UiChild 很好,因为它允许我们以编程方式添加子元素,除了它们在 UIBinder ui.xml 中的表示。

但是,我发现了一些看起来很臃肿而且有点奇怪的东西。

所以,当我第一次遇到@UiChild 时,我以为它会这样工作。

<g:FlowPanel>           
        <c:CustomWidget customWidgetParameter="I am a 
parameter"ui:field="customFieldMappingName"/>                                   
</g:FlowPanel>

@UiChild(tagname ="CustomWidget" )
     public void addCustomWidget(CustomWidget cw) 

干净整洁。我认为 GWT 会寻找任何“CustomWidget”标签。 然而,经过研究,我发现我必须做这样的事情。

<g:FlowPanel>
    <c:addCustomWidget>
        <c:CustomWidget customWidgetParameter="I am a parameter"
            ui:field="customFieldMappingName"/>         
    </c:addCustomWidget>
</g:FlowPanel>

@UiChild(tagname ="addCustomWidget" )
     public void addCustomWidget(CustomWidget cw) 

我做错了吗?或者我是否缺少某种原因/微小的细节来说明为什么它会这样实现?

【问题讨论】:

    标签: xml gwt uibinder


    【解决方案1】:

    不确定这是否是原因,但您可能有多个 @UiChild 定义。 可能 GWT 不使用类型信息,而只使用标记名来检查要调用的函数:

    <gui:MyCustomContainer>
       <gui:myHeader>
          <g:SomeWidget>
       </gui:myHeader>
       <gui:myContent>
          <g:SomeWidget>
       </gui:myContent>
    </gui:MyCustomContainer>
    

    在你的MyCustoContainer 课堂上:

    @UiChild(tagname="myHeader")
    public void addHeader(Widget widget);
    
    @UiChild(tagname="myContent")
    public void addContent(Widget widget);
    

    【讨论】:

    • 感谢您的意见!是的,这绝对是一个正当的理由。我希望我能以某种方式翻转注释中的属性,该属性可以控制您的 uichild 是否仅是元素。也许对我来说尝试添加这样的东西是个好主意,因为 GWT 是开源的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2011-05-01
    • 1970-01-01
    • 2021-04-15
    • 2020-08-08
    相关资源
    最近更新 更多