Databinding programmatisch
GUI-Komponente wie die Grid oder der Binder können programmatisch mit einem Entity verknüpft werden.
Liste an GUI-Komponente, welche Databinding benötigen:
Databinding mit CheckboxGroup, RadioButtonGroup, ComboBox, Select oder ListBox:
Zuerst muss die Komponente typisiert werden, dazu im GUI-Builder die Komponente anwählen und dann in den Properties auf Property > Object > Type Arguments klicken z.B. java.lang.String
Im folgenden Dialog den Typ auswählen, welchen Sie anzeigen wollen.
Danach können Sie auswählen, welche Information pro Eintrag angezeigt werden soll.
Um die Komponente jetzt zu befüllen, können Sie folgenden Code schreiben:
this.theComponent.setItems(myListWithItems);Im Hintergrund erstellt Vaadin dann für die übergebene Liste einen DataProvider. Wenn ein Element also in der Liste geupdated wird, muss diese dann auch der DataProvider geupdated werden:
this.theComponent.getDataProvider().refreshItem(itemFromTheListThatChanged);Falls Sie ein Element löschen oder neu hinzufügen, müssen Sie die refreshAll-Methode aufrufen:
this.theComponent.getDataProvider().refreshAll();Mit getValue() können Sie nach den ausgewählte(n) Elemente abfragen.
Databinding mit Binder:
Mit dem Binder lassen sich ganz einfach Formulare erstellen. Dafür einfach ein Entity per Drag and Drop auf den GUI-Builder ziehen. Danach öffnet sich ein Dialog, wo Sie die Attribute auswählen können, die angezeigt werden sollen.
Ein Entity kann jetzt wie folgt gebunden werden:
this.binder.writeBean(myBean);Jetzt sind die Werte des Beans in die Felder des Binders übertragen worden.
Die Werte können jetzt wie folgt wieder geholt werden:
this.binder.readBean(myBean);Databinding mit Grid:
Das Grid lässt sich ähnlich wie CheckboxGroup etc. binden. Zuerst das Entity per Drag and Drop in den GUI-Builder ziehen. Danach öffnet sich aber ein komplexerer Dialog. Dort können Sie die Attribute auswählen, die angezeigt werden sollen. Sie können aber auch Column per Code einfügen wie folgt:
this.grid.addColumn(Customer::getAddress).setHeader("Addressen").setAutoWidth(true);Es müssen aber nicht Methoden des Entities genutzt werden:
this.grid.addColumn(customer -> "Address is: " + customer.getAddress()).setHeader("Addressen").setAutoWidth(true);Das setzen der Items, sowie das Refreshen des Dataproviders ist identisch zu der CheckboxGroup etc.
XDEV Software Corp. - One Embarcadero Center, San Francisco, CA 94111, US
Copyright © 2015. XDEV Software Corp. All rights reserved.