WebAG Automat 5.0
|
Formularsystem 2.0
Formulare - Validierungen
Inhaltsverzeichnis
1. Validierungsmöglichkeiten
2. Parameter im Validierungsaufruf
3. Beispiel: Datumseingabe auf Volljährigkeit prüfen
4. Beispiel: Eingabe auf Buchstaben prüfen
1. Validierungsmöglichkeiten
Eingabevalidierungen sind bei folgenden Elementen möglich:
- Text
- Textarea
- External
Die Validierung erfolgt im Pop-Up-Modus direkt nach der Eingabe und dem Abspeichern der Daten. Eventuelle Validierungsfehler werden im Pop-Up-Eingabefeld angezeigt. Fehlerhaft validierte Eingaben werden nicht abgespeichert.
Abbildung 1 - Pop-Up-Eingabe mit Validierung
Abbildung 2 - Pop-Up-Eingabe mit Validierung (Fehlermeldung)
Im Pop-In-Modus erfolgt die Validierung ebenfalls direkt nach der Eingabe und dem Abspeichern der Daten. Fehlerhaft validierte Eingaben werden nicht abgespeichert.
Abbildung 3 - Pop-In-Eingabe mit Validierung
Abbildung 4 - Pop-In-Eingabe mit Validierung (Fehlermeldung)
Bei der Verwendung von Standard-Eingabefeldern werden alle Validierungen nach dem Abspeichern oder Abschicken durchgeführt und eventuelle Eingabefehler gesammelt in einem Pop-Up-Fenster ausgegeben. Fehlerhaft validierte Eingaben werden nicht abgespeichert.
2. Parameter im Validierungsaufruf
Validierungsroutinen werden individuell als PL/SQL-Procedures programmiert und ihr Aufruf als Validate-Attribut unter den Element-Parametern eingetragen:
Abbildung 5 - Validate-Attribut im Text-Element
Der hier verwendete Aufruf lautet:
wt_my_form.validate_characters(
i_form_container_id => ${FORM_CONTAINER_ID},
i_element_id => ${ELEMENT_ID},
i_value => '${VALUE}',
i_lang => '${LANG}')In diesem Aufruf werden Parameter verwendet, die an die PL/SQL-Procedure weiter gegeben werden:
- ${FORM_CONTAINER_ID}
- ${ELEMENT_ID}
- '${VALUE}'
- '${LANG}'
Die Parameter werden zur Laufzeit durch entsprechende Werte ersetzt die für den Ablauf der Validierungs-Procedure erforderlich sind.
Folgende Parameter können verwendet werden:
- ${FORM_CONTAINER_ID}
wird ersetzt durch die interne ID des Containers (form_container_id) unter welcher die Daten im XML-Container abgelegt sind
- '${LANG}'
wird ersetzt durch die Sprachvariable der Sprache in der das Formular bearbeitet wird. Anhand der Sprachvariable können Fehlermeldungen in verschiedenen Sprachen ausgegeben werden
.- ${ROW}
wird ersetzt durch die ID der Listenzeile in der die Validierung verwendet wird. Dieser Parameter wird nur benötigt, wenn sich die Validierung auf ein Listenelement bezieht.
- ${ELEMENT_ID}
wird ersetzt durch interne ID des Elements das grade validiert wird (element_id)
- '${ELEMENT_NAME}'
wird ersetzt durch den Namen des Elements das grade validiert wird (element_name)
- '${VALUE}'
wird ersetzt durch den eingegebenen Wert
- '${FORMAT}'
wird ersetzt durch durch das Eingabeformat das im Format-Attribut eingetragen istDie 'Anführungsstriche' bei einigen Parametern sind unbedingt erforderlich da es sich um Strings handelt. Wenn sie vergessen werden kommt es bei der Ausführung der Validierungs-Procedure zu Fehlern.
3. Datumseingabe auf Volljährigkeit prüfen (Beispiel)
Das Beispiel zeigt, wie eine Texteingabe als Geburtsdatum interpretiert werden kann aus dem Rückschluss auf die (nicht-) Volljährigkeit gezogen wird.
PROCEDURE validate_volljaehrig (
i_form_container_id IN NUMBER DEFAULT NULL,
i_element_id IN NUMBER DEFAULT NULL,
i_value IN VARCHAR2 DEFAULT NULL,
i_format IN VARCHAR2 DEFAULT NULL
)
IS
l_DOMDocument xmldom.DOMDocument;
l_RootNode xmldom.DOMNode;
l_RootElement xmldom.DOMElement;
l_xml_data CLOB;
l_date DATE;
l_min_date DATE;
l_date_konvertiert VARCHAR2(32);
BEGIN
--------
-- Formatvalidierung
--------
BEGIN
l_date := TO_DATE(i_value, i_format);
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20815, 'Fehler: Datum entspricht nicht dem Eingabeformat '||i_format);
END;
--------
-- Datum fuer Altersgrenze bilden
--------
SELECT TO_DATE(TO_NUMBER(TO_CHAR(SYSDATE,'yyyy'))-18,'yyyy')
INTO l_min_date
FROM DUAL;
--------
-- Altersgrenze ueberpruefen
--------
IF l_date > l_min_date
THEN
BEGIN
--------
-- XML Quelltext holen
--------
SELECT xml_data
INTO l_xml_data
FROM wt_form_container
WHERE form_container_id = i_form_container_id;
--------
-- XML Dokument initialisieren
--------
wt_form_api.init_xml (i_xml_data => l_xml_data,
o_xml_domdocument => l_DOMDocument);
-------
-- Root finden
-------
l_RootElement := xmldom.getDocumentElement(l_DOMDocument);
l_RootNode := xmldom.makeNode(l_RootElement);
--------
-- Datum konvertieren
--------
l_date_konvertiert := TO_CHAR(l_date, i_format);
--------
-- konvertiertes, ungueltiges Geburtsdatum wieder eintragen
--------
wt_form_api.set_element_value(
i_form_container_id => i_form_container_id,
i_element_id => i_element_id,
i_value => l_date_konvertiert,
i_DOMDocument => l_DOMDocument);
--------
-- XML-Dokument speichern
--------
wt_form_api.save_xml (i_DOMDocument => l_DOMDocument,
i_form_container_id => i_form_container_id);
--------
-- Fehlercode erzeugen
--------
raise_application_error(-20815, 'Sie sind noch nicht volljährig!');
END;
ELSIF l_date > SYSDATE
THEN
--------
-- Fehlercode erzeugen
--------
raise_application_error(-20815, 'Ungueltiges Datum.');
END IF;
END; -- validate_volljaehrig
Für das Eingabefeld GEBURTSDATUM_text werden folgende Parameter gesetzt:
VALIDATE
wt_my_form.validate_volljaehrig(
i_form_container_id => ${FORM_CONTAINER_ID},
i_element_id => ${ELEMENT_ID},
i_value => '${VALUE}',
i_format => '${FORMAT}')FORMAT
DD.MM.YYYY
Abbildung 6 - Parameter für Eingabefeld GEBURTSDATUM_text
4. Eingabe auf Buchstaben prüfen (Beispiel)
Das Beispiel zeigt, wie eine Texteingabe auf das Vorhandensein nur von Buchstaben (keine Zahlen) überprüft werden kann (siehe Eingangsbeispiel unter Validierungsmöglichkeiten).
PROCEDURE validate_characters (
i_form_container_id IN NUMBER DEFAULT NULL,
i_element_id IN NUMBER DEFAULT NULL,
i_value IN VARCHAR2 DEFAULT NULL,
i_lang IN VARCHAR2 DEFAULT NULL
)
IS
BEGIN
IF i_value <> TRANSLATE(i_value, '1234567890', ' ')
THEN
IF i_lang = 'de'
THEN
raise_application_error(-20815,'Die Eingabe enthaelt ungueltige Zeichen. Es sind nur Buchstaben erlaubt.');
ELSE
raise_application_error(-20815,'Die Eingabe enthaelt ungueltige Zeichen. Es sind nur Buchstaben erlaubt.');
END IF;
END IF;
END; -- validate_characters
Für das Eingabefeld p_text werden folgende Parameter gesetzt:
VALIDATE
wt_my_form.validate_characters(
i_form_container_id => ${FORM_CONTAINER_ID},
i_element_id => ${ELEMENT_ID},
i_value => '${VALUE}',
i_lang => '${LANG}')
WebAG Automat Dokumentation
Copyright © Enterprise Web AG.
Alle Rechte vorbehalten.