GWT使用来自uibinder的数组参数调用UiConstructor

时间:2012-08-22 20:39:21

标签: gwt uibinder

我有以下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表示法来设置构造函数的数组类型属性< /强>

1 个答案:

答案 0 :(得分:4)

ui:和你的朋友在一起。

有一个方法

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

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

然后使用imgRsrcs作为参数,假设在类zzz.Main

中找到了imgRsrcs()
<ui:with field='main' type='zzz.Main'/>

<mywidget:ToggleButtonGroup faceImages="{main.imgRsrcs}"/>

了解ui:with https://developers.google.com/web-toolkit/doc/latest/DevGuideUiBinder