我试图在我的 UiBinder XML 中声明这些元素:
<label for="lastName">Last Name:</label>
<input type="text" id="lastName" ui:field="lastNameField" maxlength="150" />
简单地说,与文本输入相关联的标签。
但是,当我尝试编译时,出现此错误:
[错误] 不能在同一元素 Element (:23) 上声明 id="lastName" 和 ui:field="lastNameField"
这似乎是一个愚蠢的限制,尤其是因为ui:field
它不会生成 ID。到目前为止,我发现的唯一解决方案是在 Java 代码本身中分配 ID,如下所示:
@UiElement InputElement lastNameField;
...
lastNameField.setId("lastName");
这给我的 Java 添加了不必要的混乱。它还增加了复杂性,即如果此 ID 在某处更新,<label>
则 XML 中的声明也需要更新(并且标签没有 @UiElement,因此从 Java 端几乎完全不可见。)
有没有办法从 UiBinder XML 本身中将 ID 添加到具有 ui:field 声明的元素?