(dieser Eintrag wird fortgeführt)
Die Eingabeelemente eines Web-Formulars empfangen ihre Werte idealerweise
aus dem Request-Objekt. Drei Fälle sind zu unterscheiden:
-
Auffrischen: Das Request-Objekt enthält die Daten eines
vorangegangenen Submit. Es ist nichts zu tun. Dies ist
typischerweise bei einem Fehler der Fall oder wenn in Folge einer
Benutzerauswahl ein Neuaufbau des Formulars erforderlich ist.
-
Bearbeiten: Die Daten kommen aus der Datenbank. Die Daten werden
selektiert und auf das Request-Objekt kopiert, ggf. nach einer
geeigneten Transformation.
-
Neueingabe: Es gibt keine äußere Datenquelle. Das Request-Objekt
wird mit Defaultwerten für die Formularfelder initialisiert.
In Perl:
1 |
# Request-Objekt für Webformular manipulieren |
2 |
|
3 |
my $action = $cgi->get('action'); |
4 |
my $objId = $cgi->get('obj_id'); |
5 |
|
6 |
if ($action) { |
7 |
# Fall 1: nichts tun |
8 |
} |
9 |
elsif ($objId) { |
10 |
# Fall 2: Datenbank-Inhalt selektieren und auf Request-Objekt kopieren |
11 |
my $obj = Object->lookup($db,obj_id=>$objId); |
12 |
$obj->copyTo($cgi); |
13 |
} |
14 |
else { |
15 |
# Fall 3: Request-Objekt mit Defaultwerten initialisieren |
16 |
$cgi->set(@keyVal); |
17 |
} |
18 |
|
19 |
# Ab hier Felder aus dem Request-Objekt initialisieren |
$cgi ist das Request-Objekt.
$action zeigt an, ob die Daten nach einem Submit an das Formular
zurückgeliefert wurden. Die Formularwerte kommen dann aus den CGI-Parametern.
$objId ist die Id des Modell-Objekts. Wenn $action nicht gesetzt ist,
wird das Formular aus dessen Attributen initialisiert.
Object ist die Modell-Klasse. Diese implementiert die Methode
copyTo(), welche die Datensatz-Attribute auf das Request-Objekt kopiert.
$db ist das Datenbank-Objekt, über das auf ddie Datenbank
zugegriffen wird.
@keyVal ist die Liste aus Schlüssel/Wert-Paaren für die Initialisierung
mit den Defaultwerten.