3

UiBinder で「CustomWid」などのカスタム ウィジェットを作成しています。そして CustomWid.java ファイルで、次のような引数がゼロの 2 つのコンストラクターを記述しています。 CustomWid(){....}

 another with some args like 

CustomWid(String a,String b){......}<my:CustomWid/> だから、今私 は別の .ui.xml ファイルでカスタム ウィジェットを使用しています <my:CustomWid a="srt1" b="str2"/> 。 1 つの .ui.xml で両方のタグを指定しようとすると <my:CustomWid/> <my:CustomWid a="str1" b="str2"/> 、単一の .ui.xml で両方のタイプのタグを使用しているときにエラーがスローされるようになりました。を使用して@uiConstructorいますが、エラーが表示されます 開発者にお願いします... できるだけ早く回答が必要です

4

2 に答える 2

4

UiBinder は、特定のウィジェットに対して単一のコンストラクターのみを使用します: 引数のないコンストラクター、または@UiConstructor(どちらか一方の呼び出しを使用する場合に機能するが、両方を使用する場合には機能しないと言うことに驚いています: いずれの場合も 1 つが失敗するはずです)。 、そしてすべての場合に成功するはずです;コンストラクターに で注釈を付けていない場合は@UiConstructor<my:CustomWid/>常に機能し、<my:CustomWid a="str1" b="str2"/>常に失敗するはずです)

ここには 2 つの解決策があります。

  • aおよびb属性 (void setA(String a)および))のセッターを使用し、void setB(String b)後で ( または で) A と B のいずれかまたは両方を持っていることを確認onLoadonAttachますが、どちらかが欠けているわけではありません (それがルールである場合)。
  • 他のコンストラクターを使用@UiField(provided = true)する必要がある場合に使用します(UiBinder で引数のないコンストラクターを使用することを選択した場合 (つまり、いいえ) 、XML から Java コードに移動する必要があることを意味します)。@UiConstructora="str1" b="str2"@UiField(provided = true) CustomWid myCustomWid = new CustomWid("str1", "str2")

最初のオプションは私の好みです。

于 2013-07-19T09:45:56.933 に答える
0

エラーは表示されません...」

  @UiConstructor
  public Component(String displayText,String heading)
      {
 initWidget(uiBinder.createAndBindUi(this));

  this.displayText.setText(displayText);
    this.heading.setText(heading);  
    }`

デフォルトのパラメーターを持つ別のコンストラクターを使用するようになり public Component() { initWidget(uiBinder.createAndBindUi(this)); }
ました。また、xml パラメーター コンポーネントを追加すると機能し、パラメーターなしでも同じページで機能します。

于 2013-07-19T10:02:54.843 に答える