Mit einen Formular können Daten eines einzelnen Entities in der GUI angezeigt und verändert werden. Wenn der Benutzer dann seine Änderungen speichert, wird im Hintergrund das Entity angepasst. Mit RapidClipse können Sie ein Formular wie folgt erstellen:
Ziehen Sie ein Entity in den GUI-Builder. Jetzt sollte ein Dialog mit den einzelnen Properties des Entities erscheinen.
...
In diesen Dialog können Sie auswählen, welche Properties des Entities angezeigt werden sollen, indem Sie den Haken links setzen oder entfernen.
In dem Feld daneben, können Sie den Namen, welches neben den Eingabefeld angezeigt wird, angeben.
In der Type-Spalte können Sie die Datentypen der Felder sehen.
In der Editor-Spalte können Sie die Komponente auswählen, die Sie für das Feld verwenden wollen (z.B. für das Discount-Feld können Sie auch anstatt dem NumberField ein einfaches TextField benutzen).
In der Data-Spalte können Sie den Query für die Unter-Entities auswählen, welcher benutzt wird, um die Daten für diese Unter-Entities zu holen.
Mit der Spalte mit dem * können Sie das Required-Flag für dieses Feld setzen.
Wenn Sie eine Reihe auswählen, können Sie dann auf Move up und Move down drücken um die Position des Feldes zu ändern.
Nach drücken auf OK wird die Form für Sie generiert.
In der Outline können Sie sehen, dass ein FormLayout mit verschiedenen FormItems erzeugt wurde. Jedes FormItem enthält das Label-Feld mit dem Namen der Property, als auch den ausgewählten Editor, mit welchen das Feld verändert werden kann. Darunter gibt es aber auch einen Binder, welcher auf der Oberfläche nicht angezeigt wird, aber für das DataBinding eine große Rolle spielt.
...
Dieser Binder verbindet das Entity mit den einzelnen Feldern. Um den Binder zu konfigurieren, können Sie diesen in der Outline anwählen und dann in der Properties-View auf Bindings drücken.
...
In der Required-Spalte können Sie nochmal anpassen, welche Felder vom Benutzer ausgefüllt werden müssen.
In der Error Message-Spalte können Sie eingeben, welche Fehlermeldung erscheinen soll, wenn ein falscher Wert eingegeben wurde.
In der Null Representation-Spalte können Sie angeben, welcher Wert benutzt werden soll, wenn der Benutzer das Feld nicht ausgefüllt hat.
Mit der Read only-Spalte können Sie angeben, ob das Feld nur zur Darstellung benutzt werden soll. Der Benutzer kann dann den Wert des Feldes nicht verändern.
Setzen des angezeigten Entities:
Wenn das Formular erstellt wurde, kann ein Wert mithilfe des Binders gesetzt werden. Dazu gibt es zwei verschiedene Möglichkeiten:
setBean() und getBean()
Mit setBean(dasEntity) kann eine Entity-Referenz an den Binder gegeben werden. Wenn ein Wert in der Form geändert wird, wird das entsprechende Feld des Entities gleichzeitig mitgeändert. Mit getBean() wird die Referenz des gebundenen Entities zurückgegeben. Beispiel:
Code Block | ||
---|---|---|
| ||
// Setting the bean
Entity myEntity = new Entity();
myEntity.setName("test");
binder.setBean(myEntity);
// Getting the bean
Entity boundEntity = binder.getBean(); |
readBean() und writeBean()
Mit readBean(dasEntity) werden die Werte des Entities gelesen, es wird aber keine Referenz zu diesen Entity gespeichert. Das heißt, wenn ein Wert in der Form geändert wurde, wird das Entity nicht geupdated. Mit writeBean(neuesBean) können die Werte von der Form in ein Entity geschrieben werden. Beispiel:
Code Block | ||
---|---|---|
| ||
// Reading the contents of myEntity into the Binder
Entity myEntity = new Entity();
myEntity.setName("test");
binder.readBean(myEntity);
// Writing the form values into a new Entity
Entity newEntity = new Entity();
try
{
binder.writeBean(details);
}
catch(ValidationException e)
{
e.printStackTrace();
} |
Eine ValidationException wird geworfen, wenn die Validierung für ein Feld fehlschlägt.
Setzen eines Wertes von ausgewählten Grid-Datensatz
Um z.B. den selektierten Datensatz eines Grids in den Binder zu laden kann wie folgt vorgegangen werden:
Code Block | ||
---|---|---|
| ||
Entity selectedEntity = grid.getSelectedItems().stream().findFirst().get();
binder.readBean(selectedEntity);
... |