Seitenattribute 
Seitenattribute sind Parameter, die für eine Seite explizit deklariert werden. Sie können sowohl im Layout als auch in allen Eventhandlern auf Seitenattribute zugreifen. Sie können über Seitenattribute Daten ablegen, die im Eventhandler OnInitialization ermittelt werden; und Sie können über die Seitenattribute die Daten für die Layout-Verarbeitung und die restlichen Eventhandler zugreifbar machen. Der Zugriff auf die Inhalte der Seitenattribute ist dagegen nicht automatisch zu allen Zeitpunkten gegeben. Wenn Sie z.B. im OnIntialization eine interne Tabelle füllen, die Sie als Seitenattribut definiert haben, dann ist diese Definition zwar im OnInputProcessing bekannt, jedoch ist der Inhalt der Tabelle nicht bekannt, wenn Sie stateless arbeiten. Weitere Informationen sind weiter unten beschrieben.
Es gibt zwei Arten von Seitenattributen:
automatische Seitenattribute
nicht-automatische Seitenattribute
Wenn Sie ein Seitenattribut als automatisch kennzeichnen (auto im System), wird das Attribut mit Werten über die aufrufende URL oder über die Navigation aus anderen Seiten versorgt. Die Identifizierung eines solchen Attributs, das nur für eine Seite deklariert werden muß, erfolgt über die Namensgleichheit. Verwendet eine andere Seite einen gleichnamigen Parameter, so bekommt dieser automatisch denselben Wert zur Laufzeit zugewiesen.
Beispiel
navigation -> set_parameter(name = 'FLIGHT' value = 'LH' )
Angenommen, Sie haben FLIGHT als ein automatisches Seitenattribut definiert und in der definierenden Seite aus der Navigation mit einem Wert versorgt. Verwenden Sie dann in einer anderen Seite einen gleichnamigen Parameter, so bekommt dieser den Wert 'LH' (Lufthansa) zur Laufzeit zugewiesen.
Mögliche Typen für auto-Seitenattribute
Vor Release 6.10 war bei auto-Seitenattributen nur der Typ STRING erlaubt.
Nun sind weitere Typen möglich:
Elementare Typen außer XSTRING
Struktur
Tabellen
Beispiel
Ist firstname ein Feld in einer Struktur myaddress vom Typ address, und myaddresses eine Tabelle von Adressen, so können Sie auf firstname im Layout folgendermaßen zugreifen:
<input type=text name="myaddress.firstname">
Durch myadresses[i].firstname können Sie den entsprechenden Vornamen (firstname) in der durch 'i' repräsentierten Zeile der Tabelle definieren. Ist i=6, besteht ein Bezug zum Vornamen in der 6. Zeile der Tabelle.
Wenn Sie ein Seitenattribut als nicht-automatisch kennzeichnen, wird das Attribut mit Werten über Klassenattribute versorgt.
Die Sichtbarkeit von Seitenattributen bei der Parameterübergabe zwischen BSP-Seiten hängt davon ab, ob es sich um explizite oder implizite Navigation handelt.
Explizite Navigation:
Durch Aufruf von navigation>goto_page(page.htm) wird explizit navigiert. Hierbei spielt es keine Rolle, ob auf dieselbe Seite navigiert wird, von der man kommt.
Bei expliziter Navigation wird das Seitenobjekt immer neu instanziiert. Wird das Seitenobjekt neu instanziiert, müssen, sowohl im stateful als auch im stateless Fall, die Attribute mit navigation>set_parameter an gleichnamige auto-Seitenattribute übergeben werden, um die gesetzten Werte nicht zu verlieren.
Implizite Navigation:
Durch Benutzereingabe wird ein Request ausgelöst. Da keine explizite Navigation angegeben ist, wird wieder dieselbe Seite durchlaufen.
In diesem Fall werden die Seitenattribute sowohl im stateful als auch im stateless Fall automatisch von OnInputProcessing nach OnInitialization übernommen.
In beiden Fällen werden die auto -Seitenattribute neu aus dem Request befüllt.
Der Unterschied ist nur, dass im stateful Fall eventuell geänderte nicht-auto-Seitenattribute noch auf dem veränderten Wert stehen, im stateless Fall hingegen werden diese wieder zurückgesetzt. Dies liegt daran, dass im stateful Fall die Seiteninstanz am Leben bleibt und im stateless Fall das Objekt neu instanziiert wird.
Es gibt die folgenden Fälle unterschiedlicher Lebensdauer von automatischen und nicht-automatischen Seitenattributen bei der Navigation zwischen Seiten:
Lebensdauer von Attributen bei Verbleiben auf derselben Seite
Lebensdauer von Attributen bei der Navigation auf die gleiche Seite
Lebensdauer von Attributen bei der Navigation auf eine andere Seite
Lebensdauer von Attributen bei Verbleiben auf derselben Seite
Es findet keine Navigation statt.
Attributstyp |
Wert im Request (Beispielwert) |
Wert im OnInputProcessing |
Explizite Übergabe |
Wert im OnInitialization |
automatisch |
SAP- |
SAP- |
Nein |
SAP- |
automatisch |
SAP- |
SAP- |
Ja |
SAP- |
nicht- automatisch |
SAP- |
Nein |
SAP- |
|
nicht- automatisch |
SAP- |
Ja |
SAP- |
Lebensdauer von Attributen bei der Navigation auf die gleiche Seite
Es wird über die Verwendung des Navigationsobjektes (navigation>goto_page(samepage.htm)) auf die gleiche Seite navigiert.
Attributstyp |
Wert im Request (Beispielwert) |
Wert im OnInputProcessing |
Explizite Übergabe |
Wert im OnInitialization |
automatisch |
SAP- |
SAP- |
Nein |
|
automatisch |
SAP- |
SAP- |
Ja |
SAP- |
nicht- automatisch |
SAP- |
Nein |
||
nicht- automatisch |
SAP- |
Ja |
Lebensdauer von Attributen bei der Navigation auf eine andere Seite
Es wird über die Verwendung des Navigationsobjektes (navigation>goto_page(otherpage.htm)) auf die gleiche Seite navigiert.
Attributstyp |
Wert im Request (Beispielwert) |
Wert im OnInputProcessing |
Explizite Übergabe |
Wert im OnInitialization |
automatisch |
SAP- |
SAP- |
Nein |
|
automatisch |
SAP- |
SAP- |
Ja |
SAP- |
nicht- automatisch |
SAP- |
Nein |
||
nicht- automatisch |
SAP- |
Ja |