【问题标题】:GWT calling UiConstructor with array argument from uibinderGWT 使用来自 uibinder 的数组参数调用 UiConstructor
【发布时间】:2012-08-22 20:39:21
【问题描述】:

我有以下 UiConstructor,它接受一个数组参数,一个 ImageResource 数组

@UiField ToggleButton leftToggleButton;

public @UiConstructor ToggleButtonGroup(ImageResource[] faceImages) {
    initWidget(uiBinder.createAndBindUi(this));

    leftToggleButton.getUpFace().setImage(new Image(faceImages[0]));
    leftToggleButton.getDownFace().setImage(new Image(faceImages[1]));
}

我不知道调用此类构造函数的 ui.xml 表示法,因为它是一个数组

如果我将类型减少到只有ImageResource,我可以在我的 ui.xml 文件中成功使用以下内容

<ui:image field="SelectInverseImage" src="bundle/SelectInv.png" />
...
<mywidget:ToggleButtonGroup faceImages="{SelectInverseImage}"/>

但是,当我尝试时

<ui:image field="SelectImage" src="bundle/Select.png" />
<ui:image field="SelectInverseImage" src="bundle/SelectInv.png" />
<mywidget:ToggleButtonGroup faceImages="{SelectInverseImage}{SelectImage}"/>

当我使用数组类型ImageResource[] 时,我最终会出现以下错误

[ERROR] [roza] Cannot parse value: "{SelectInverseImage}{SelectImage}" as type ImageResource[]

有什么建议吗?

PS:我对设置按钮的upFace和downFace部分不感兴趣,这里只是为了演示..主要是定义ui.xml符号来设置构造函数的数组类型属性

【问题讨论】:

    标签: gwt uibinder


    【解决方案1】:

    ui:with 是你的朋友。

    有方法

    ImageResource[] imgRsrcs() {
      return array here ...
    }
    

    使用 ui:with 将 imgRsrcs 方法绑定到模板。

    然后使用 imgRsrcs 作为参数,假设 imgRsrcs() 在 zzz.Main 类中找到

    <ui:with field='main' type='zzz.Main'/>
    
    <mywidget:ToggleButtonGroup faceImages="{main.imgRsrcs}"/>
    

    https://developers.google.com/web-toolkit/doc/latest/DevGuideUiBinder阅读有关 ui:with 的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      相关资源
      最近更新 更多