Die XdevFieldGroup ist eine virtuelle GUI-Komponente (Virtual Component), die zu einem gemeinsamen Formular gehörende Formular-Komponenten mit dem dazugehörigen Entity, bzw. mit dessen Attributen verbindet (Mapping). Durch das Mapping zwischen Formular und Entity lassen sich Formular-Daten auf einfache Weise in das Formular übertragen und diese mit jeweils nur einem einzigen Methodenaufruf speichern und editieren. Die Formular-Komponenten können sich an völlig beliebigen Positionen befinden und müssen weder gruppiert, noch sich in einem gemeinsamen Parent-Container befinden.
New - Erzeugt einen neuen, leeren Datensatz im Speicher.
this.fieldGroup.setItemDataSource(new Category()); |
Reset - Setzt alle Formular-Komponenten zurück.
this.fieldGroup.discard(); |
Save - Speichert den Datensatz in der Datenbank ab.
this.fieldGroup.save(); |
Save + new - Speichert den Datensatz in der Datenbank ab und erzeugt einen neuen, leeren Datensatz im Speicher.
this.fieldGroup.save(); this.fieldGroup.setItemDataSource(new Category()); |
Leeres Product-Objekt erzeugen und an die XdevFieldGroup übergeben, z.B. um einen neuen Datensatz anzulegen:
Products product = new Products(); fieldGroup.setItemDataSource(product); |
Datensatz mit der ID 5 laden und an die XdevFieldGroup übergeben:
Category category = new CategoryDAO().find(5); fieldGroup.setItemDataSource(category); |
Selektierte Zeile einer XdevTable an die XdevFieldGroup übergeben (ohne die GUI-Builder Unterstützung bei Property > Connected form zu verwenden). Dafür müssen Sie bei der XdevTable das Event valueChange anlegen.
BeanItem<Category> item = table.getSelectedItem(); fieldGroup.setItemDataSource(item); |
Fügen Sie in das buttonClick Event den Code zum Auslesen der Formular-Komponenten ein.
Category category = new Category(); // Readout the textFields and filling the entity category.setCategoryname(this.textField.getValue()); category.setDescription(this.textField2.getValue()); category.setPicture(this.textField3.getValue()); // Saving the entity try { new CategoryDAO().save(category); } catch (Exception e) { // TODO: handle exception } |
Folgende UI-Komponenten können in das Mapping aufgenommen werden und lassen sich per Formular-Aktionen in der Datenbank persistieren.
Mapping per Code - Manuelles Mapping von Komponenten an die jeweilige Eigenschaft
fieldGroup.bind(textField, "name"); |
Synchronisation - Inhalte der einzelnen UI Komponenten werden mit dem zugrunde liegenden Modell synchronisiert d.h. liegt ein Product Entity zugrunde werden die Werte der UI in das Product Entity geschrieben
fieldGroup.commit(); |
Validierung aller Felder - Alle Validierungsregeln der gemappten Felder werden angewendet und geprüft
boolean valid = fieldGroup.isValid(); if (valid) { ... } else { ... } |
Prüfen auf Veränderung - Prüft ob sich in der gesamten FieldGroup etwas verändert wurde.
boolean modified = fieldGroup.isModified(); |
FieldGroup als Anzeige - Setzt alle Felder einer Fieldgroup in einen ReadOnly Status
fieldGroup.setReadOnly(true); |