Rich-UI stellt eine Möglichkeit bereit, die Art von Formularverarbeitung zu implementieren, die in
Geschäftsanwendungssoftware traditionell zum Einsatz kommt. Die Verarbeitung hängt vom Rich-UI-Controller ab,
durch den definiert wird, wie eine einzelne Anzeige (d. h. ein Widget), mit einem einzelnen Modell (d. h.
einem Datenfeld) verbunden ist. Details zu Rich-UI-Controllern finden Sie im Abschnitt
“Rich-UI - Validierung und Formatierung”.
Eine Formularverarbeitung kann zum Beispiel in einer Anwendung erfolgen, die die
folgenden Schritte ausführt:
- Die Anwendung publiziert Daten, das heißt, stellt Daten für den Benutzer dar.
- Der Benutzer aktualisiert die Daten und klickt anschließend auf eine Schaltfläche
oder drückt eine Taste, um die Daten zu übergeben.
- Der Code validiert die Eingabe, übermittelt alle validierten Daten an einen Service und
antwortet dem Benutzer.
Rich-UI stellt zwei Varianten der Formularverarbeitung zur Verfügung:
- Ein Formularmanager ist eine Handlerdeklaration, die die folgende Funktionalität bietet:
- Es kann eine Gruppe von Formularfeldern definiert werden, die jeweils eine Feldbezeichnung (bzw. Feldkennsatz: 'Label'),
einen Controller und ein Fehlerfeld enthalten können. Die anzeigbaren Komponenten können sich an einer
beliebigen Position der Benutzerschnittstelle befinden und können voneinander getrennt sein.
- Die Gruppe von Formularfeldern kann verarbeitet werden. Dazu gehören die Ausgabeformatierung, die
Eingabevalidierung und die Eingabedeformatierung. Beispiel: Wenn ein Währungswert in einem Feld
mit dem Typ NUM gespeichert wird, wird das Währungssymbol vom Eingabewert entfernt, bevor der Wert
gespeichert wird.
Sie interagieren mit einem Formularmanager, indem Sie Code schreiben oder
Code verwenden, den der Rich-UI-Editor für Sie bereitstellt.
Das folgende Beispiel zeigt
eine Deklaration eines Formularmanagers:
employeeForm FormManager { entries = [
new FormField { nameLabel="Name:", controller=nameController },
new FormField { nameLabel="Age:", controller=ageController },
new FormField { nameLabel="Salary:", controller=salaryController }
]};
- Ein Validierungsformular ist ein Container, der ebenfalls das Definieren
und Verarbeiten einer Gruppe von Formularfeldern ermöglicht. Das Validierungsformular ist
einfach in der Verwendung, jedoch weniger flexibel und erfordert, dass die anzeigbaren Aspekte
der Formularfelder höchstens in drei Spalten angeordnet werden. Die anzeigbaren Aspekte können in diesem Fall
eine Bezeichnung ('Label'), eine Controlleranzeige und ein Fehlerfeld beinhalten.
Das folgende Beispiel zeigt eine Deklaration eines Validierungsformulars:
employeeForm ValidatingForm { entries = [
new FormField { displayName="Name:", controller=nameController },
new FormField { displayName="Age:", controller=ageController },
new FormField { displayName="Salary:", controller=salaryController }
]};
Bei Verwendung eines Validierungsformulars geben Sie nur
die Werte displayName und controller
in einem Formularfeld an. Die übrigen Werte werden von dem Validierungsformular selbst
bereitgestellt.
In beiden Fällen rufen Sie Funktionen auf, die jeweils die Formularfelder der Reihe nach
verarbeiten, zum Beispiel um das Formular als Ganzes zu validieren.
Ausgangspunkt für die Formularentwicklung
EGL stellt einen Ausgangspunkt
für die Formularentwicklung zur Verfügung. Das heißt kurz gefasst, dass der Rich-UI-Editor anwendungsspezifischen
Code bereitstellt und Sie Logik hinzufügen, um diesen Code aufzurufen. Gehen Sie für die Anfangsentwicklung wie folgt vor:
- Öffnen Sie einen Handler im Rich-UI-Editor und fügen Sie per Drag-and-drop eine Datensatzdefinition auf
der Registerkarte 'Entwurf' ein.
- Arbeiten Sie mit einem Assistenten, wie dies in “Widgets durch Ziehen von Daten in den Rich-UI-Editor
erstellen” beschrieben wird.
Als Antwort auf Ihre Tastatureingabe fügt der Editor Ihrem
Handler den folgenden Code hinzu:
- Einen Formularmanager. Die Formularfelder in der Deklaration sind auf Ihre Anforderungen abgestimmt.
- Funktionen, die auf die allgemeine Formularverarbeitungslogik im Formularmanager zugreifen.
Formularfelder
Ein Formularfeld ist selbst eine Datensammlung, d. h. ein Datensatz
vom Typ 'FormField'. Der Datensatz wird bei einem Formularmanager anders als bei einem Validierungsformular
verwendet. Die Verwendung nur eines Datensatztyps für beide dieser Mechanismen bedeutet, das problemlos
zwischen den beiden umgeschaltet werden kann.
Sie legen die für Ihren Zweck geeigneten Datensatzfelder
fest, die in der folgenden Tabelle aufgeführt sind.
| Feld im Datensatz vom Typ 'FormField' |
Feldwert |
Kontext |
Details |
| controller |
Controller |
Formularmanager oder Validierungsformular |
Der Controller ist eine Definition, durch die eine Anzeige einem Modell zugeordnet wird. |
| displayName |
String? |
Validierungsformular |
Die Zeichenfolge wird einer Feldbezeichnung (bzw. Feldkennsatz) zugeordnet,
die vom Validierungsformular für Sie bereitgestellt wird. Die Zeichenfolge wird ignoriert,
wenn Sie einen Formularmanager verwenden. |
| errorLabel |
TextLabel |
Formularmanager |
Die Textbezeichnung mit dem Namen errorLabel ist das
Fehlerfeld. Sie zeigt die Fehlernachricht an (sofern zutreffend), die während der Validierung eines
Formularfelds ausgegeben wird. Die Darstellung des Fehlerfelds ändert sich, wenn ein Fehler auftritt. Wenn Sie einen Formularmanager verwenden, geben Sie die Textbezeichnung bei der Deklaration des
Formularfelds an. Wenn Sie jedoch ein Validierungsformular verwenden, wird die Textbezeichnung
für Sie bereitgestellt.
|
| nameLabel |
TextLabel |
Formularmanager |
Eine Formularfeldbezeichnung. Die Einstellung wird ignoriert, wenn Sie ein
Validierungsformular verwenden, das eine Bezeichnung bereitstellt und den Wert von
displayName dieser Bezeichnung zuordnet. |
| labelClass |
String? |
Zur Verwendung durch Rich-UI |
Eine CSS-Klasse. Ändern Sie diesen Wert nicht, da er verwendet wird, um die
Formularfeldbezeichnung wieder in ihre ursprüngliche Darstellung zu ändern, wenn ein Fehler behoben wurde. Der Klassenname ist 'EglRuiTextLabel'. Derselbe Klassenname wird verwendet, wenn ein Fehler auftritt,
jedoch unter Hinzufügung der folgenden sekundären Klasse: FormErrorLabel.
|
Wenn
Sie mit einem Validierungsformular arbeiten, geben Sie die Werte für controller
und displayName an.
Wenn Sie einem Formularmanager arbeiten, geben Sie die Werte für controller und nameLabel
und optional den Wert für errorLabel an.
Funktionen auf Formularebene
Die Funktionen auf Formularebene rufen
controllerspezifische Funktionen auf. Die Reihenfolge der Aufrufe ist umgekehrt zur Reihenfolge
der Formularfelder in der Feldgruppe entries.
Ihr Code ruft wahrscheinlich
Funktionen zur Validierung, Festschreibung ('Commit') und Publizierung von Daten auf. Ihr Code könnte
zum Beispiel die folgende Logik erweitern:
if (employeeForm.isValid())
employeeForm.commit();
end
Der Controller selbst ruft eine controllerspezifische Funktion
validStateSetter am Ende der Validierung auf.
Beachten Sie die Reihenfolge der Ereignisse:
- Ihr Aufruf der Funktion isValid auf Formularebene hat für jeden Controller
wiederum die folgende Wirkung:
- Er ruft die Funktion isValid des Controllers auf, die ihrerseits die Funktionen in
validator aufruft, die in der Controllerdefinition referenziert werden. Dieser
Prozess beinhaltet auch elementare Validierungen wie zum Beispiel für die Eigenschaft
isDecimalDigit des Controllermodells.
- Er ruft die Funktion validStateSetter des Controllers auf.
Diese Funktion ist standardmäßig die Funktion validStateSetter auf Formularebene.
- Wenn alle Controlleranzeigen gültige Daten enthalten, ruft Ihr Code die Funktion
commit auf Formularebene auf. Diese Funktion ruft die einzelnen controllerspezifischen
Funktionen commit auf, um die Daten in einer Controlleranzeige zu deformatieren und
den Wert in ein Controllermodell zu schreiben.
In Anbetracht der oben beschriebenen Reihenfolge
könnten Sie eine eigene feldübergreifende Validierung aufrufen, nachdem die Formularvalidierungen erfolgreich
abgeschlossen wurden. Ihr Code könnte wie folgt aussehen:
if (employeeForm.isValid())
if (myValidation())
employeeForm.commit();
end
end
Nachfolgend sind die Funktionen auf Formularebene in alphabetischer Reihenfolge aufgeführt:
- commit()
- Ermöglicht das Festschreiben aller Anzeigen in den zugehörigen Modellen in einem Befehl.
Nachdem Sie die Funktion commit der Formularebene aufgerufen haben, können Sie alle Modelldaten an
einen Service übertragen.
Die Funktion hat keine Parameter und keinen Rückgabewert.
- isValid()
- Ruft die controllerspezifischen Funktionen isValid auf.
- Die Funktion hat keine Parameter und gibt einen booleschen Wert zurück, um anzugeben, ob die Validierung
für alle Formularfelder erfolgreich war.
- publish()
- Ruft die einzelnen controllerspezifischen Funktionen publish auf, um
Daten, die im Controllermodell gespeichert sind, zu formatieren und die formatierten Daten an eine
Controlleranzeige zu schreiben. Ihr Code könnte den Befehl publish der Formularebene in einer
Rückruffunktion aufrufen, die aufgerufen wird, nachdem Ihr Code Daten empfangen hat, die aus einem Service
zurückgegeben wurden.
Die Funktion hat keine Parameter und keinen Rückgabewert.
- validate()
- Ruft die controllerspezifischen Funktionen validate auf.
Die Funktion hat keine Parameter und gibt einen booleschen Wert zurück, um anzugeben, ob die Validierungen
erfolgreich waren, das heißt, ob alle controllerspezifischen Funktionen validate einen Nullwert oder
einen leeren Wert zurückgegeben haben.