1

私は1つの配列引数、ImageResource配列を取る次のUiConstructorを持っています

@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 に答える