我有以下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表示法来设置构造函数的数组类型属性< /强>
答案 0 :(得分:4)
ui:和你的朋友在一起。
有一个方法
ImageResource[] imgRsrcs() {
return array here ...
}
使用ui:with将imgRsrcs方法绑定到模板。
然后使用imgRsrcs作为参数,假设在类zzz.Main
<ui:with field='main' type='zzz.Main'/>
<mywidget:ToggleButtonGroup faceImages="{main.imgRsrcs}"/>
了解ui:with https://developers.google.com/web-toolkit/doc/latest/DevGuideUiBinder。