1

我有以下 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 表示法,因为它是一个数组

如果我将类型减少到 only 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符号来设置构造函数的数组类型属性

4

1 回答 1

4

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 的信息。

于 2012-08-23T07:18:53.327 回答