UiBinder XML でこれらの要素を宣言しようとしています。
<label for="lastName">Last Name:</label>
<input type="text" id="lastName" ui:field="lastNameField" maxlength="150" />
簡単に言えば、テキスト入力に関連付けられたラベルです。
ただし、コンパイルしようとすると、次のエラーが発生します。
[エラー] 同じ要素で id="lastName" と ui:field="lastNameField" を宣言できません Element (:23)
ui:field
特にID を生成しないため、これはばかげた制限のように思えます。これまでに見つけた唯一の解決策は、次のように Java コード自体に ID を割り当てることです。
@UiElement InputElement lastNameField;
...
lastNameField.setId("lastName");
これにより、Java が不必要に煩雑になります。また、この ID がどこかで更新された場合<label>
、XML の宣言も更新する必要があるという複雑さを追加します (ラベルに @UiElement がないため、Java 側からはほとんど完全に見えません)。
UiBinder XML 自体から ui:field 宣言を使用して要素に ID を追加する方法はありますか?