Id hinzufügen Feld mit ui:field-Erklärung
Ich versuche zu erklären, diese Elemente in meine UiBinder XML:
<label for="lastName">Last Name:</label>
<input type="text" id="lastName" ui:field="lastNameField" maxlength="150" />
Einfach gesagt, eine Kennzeichnung zugeordnet ist, das eine Texteingabe.
Wenn ich versuche zu kompilieren, aber ich bekomme diese Fehlermeldung:
[ERROR] Cannot declare id="lastName" und " ui:field="lastNameField" auf das gleiche element (element) (: 23)
Scheint dies eine idiotische Einschränkung, vor allem, da ui:field
nicht erstellen Sie eine ID. Die einzige Lösung, die ich bisher gefunden habe, ist die Zuordnung der ID im Java-code selbst so:
@UiElement InputElement lastNameField;
...
lastNameField.setId("lastName");
Dieser fügt unnötig in Unordnung zu meinem Java. Es fügt auch die Komplikation, dass, wenn diese ID wird aktualisiert, irgendwo hinunter die Linie, die <label>
Deklaration in der XML wird auch aktualisiert werden müssen (und es gibt keine @UiElement für das label, so es ist ziemlich viel, völlig unsichtbar von der Java-Seite.)
Gibt es eine Möglichkeit zum hinzufügen einer ID zu einem element mit einer Benutzeroberfläche:Feld Erklärung innerhalb der UiBinder XML selbst?
InformationsquelleAutor Roddy of the Frozen Peas | 2013-04-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
UiBinder wird eine ID verwendet, die Umsetzung seiner
ui:field
Magie, also Nein, Sie können nicht legen Sie es aus der XML.Den Weg, es zu tun ist, um eine Java-Konstante mit der ID und verwenden Sie es von beiden Seiten:
und in der XML:
Beachten Sie, dass ich noch nicht getestet, den obigen code, mit
type="java.lang.String"
habe ich immer verwendeteine Klasse, die verschiedene Identifikatoren verwenden (oder vielmehr eine Schnittstelle mit einem generator)
Alternativen sind:
wenn Sie können, verwenden Sie die Alternative syntax für
<label>
:Lesen Sie die
for=""
Wert von Java zu verwenden, es insetId()
, zumindest die, die Sie entfernen, Vervielfältigung, aber Sie haben immer noch das Problem, dass Ihre IDs möglicherweise nicht eindeutig sein (sobald Sie Ihre UiBinder-widget mehr als einmal)Debug-IDs gibt es für... Debuggen. Missbrauch Werkzeuge tut selten gut auf lange Sicht.
InformationsquelleAutor Thomas Broyer
Können Sie vereinfachen, Thomas' Antwort (ein wenig) durch den Zugriff auf die id im uibinder wie diese:
Wenn Sie GWT-Bootstrap-es ist eine praktische Funktion, können Sie die Draht Sie alles nur xml:
InformationsquelleAutor Rob
b:id="test"
funktioniert für alle gwtbootstrap3 widgets.Es ist nützliche Informationen. Bootstrap ist sehr beliebt.
Es ist schon in Rob ' s Antwort oben.
gwtbootstrap und gwtbootstrap3 sind zwei verschiedene Bibliotheken. Sie teilen die gleichen Funktionen, die in diesem Fall, aber das ist nicht immer der Fall. Mein Beitrag ist über gwtbootstrap3, während er erwähnt gwtbootstrap.
InformationsquelleAutor Greg Sheremeta