Einführung in Eigenschaften

Eigenschaften definieren bestimmte Optionen für Abschnitte. Die Eigenschaften werden im Allgemeinen bei der Erstellung des Abschnitts angegeben und sind dann statisch. Unter bestimmten Umständen kann eine Eigenschaft jedoch dynamisch geändert werden.

Die verfügbaren Eigenschaften sind bei jedem Abschnitt und bei jedem Stereotyp unterschiedlich. Prüfen Sie daher bei der Erstellung eines Abschnitts, welche Eigenschaften geeignet sind. Einige Abschnitte besitzen erforderliche Eigenschaften. Die meisten Eigenschaften sind jedoch optional.

Der häufigste Typ einer Eigenschaft die einfache Eigenschaft, also ein Name/Wert-Paar, mit dem eine Option für den Abschnitt festgelegt wird. Die meisten Abschnitte können eine oder mehrere einfache Eigenschaften akzeptieren, indem der Name der Eigenschaft und der Wert für die Eigenschaft am Beginn der Abschnittsdefinition in geschweiften Klammern - { } - angegeben wird. Falls Sie für einen Abschnitt mehrere Eigenschaften angeben, grenzen Sie die einzelnen Name/Wert-Paare jeweils durch ein Komma voneinander ab:
DataItem cost money(10,2) 
    {Currency = yes,
     CurrencySymbol = "$"}
end
Der Codeblock, der mit der linken geschweiften Klammer beginnt und mit der rechten geschweiften Klammer endet (also die Liste der Eigenschaften und ihrer Werte) wird als Wertfestlegungsblock bezeichnet.

Eigenschaften sind nur in bestimmten Situationen zweckmäßig. Beispielsweise können Datenelementabschnitte Eigenschaften enthalten, die nur für bestimmte Typen von Benutzerschnittstellen gelten. Sie können die Eigenschaften currency und currencySymbol aus dem obigen Beispiel zu jedem beliebigen Datenelement zuordnen, um anzugeben, dass das Datenelement einen Währungswert darstellt, und um das Währungssymbol zu definieren, das beim Anzeigen des Wertes verwendet werden soll. Im Abschnitt 'currencySymbol' der EGL-Sprachreferenz ist erläutert, dass diese Eigenschaft bei Verwendung auf einer Webseite wirksam ist, aber auf eine Anwendung für eine Konsolenbenutzerschnittstelle keinen Einfluss hat.

Eigenschaftswerte

Sie müssen für jede Eigentschaft einen gültigen Wert angeben. Einige Eigenschaften akzeptieren Zeichenfolgeliterale, andere den Wert 'yes' oder 'no', manche Eigenschaften akzeptieren Werte aus einer Liste von Optionen (so genannte Aufzählungen) und wieder andere akzeptieren Feldgruppenliterale. In den meisten Fällen kann eine Variable oder Konstante nicht als Wert einer Eigenschaft verwendet werden. Anders ausgedrückt können Sie keine boolesche Variable oder eine auf 'yes' bzw. 'no' gesetzte Zeichenfolgevariable als Wert der Eigenschaft currency verwenden, sondern müssen stattdessen ein Literal angeben, also einen Wert 'yes' oder 'no' ohne Anführungszeichen.

Bei einigen wenigen Eigenschaften müssen Sie jedoch den Namen einer Variablen oder eines Abschnitts als Wert angeben. In diesem Fall verwendet die Eigenschaft nicht die Variable oder den Abschnitt als Wert, sondern verweist auf die eigentliche Variable bzw. den eigentlichen Abschnitt. Der JSF-Handlerabschnitt akzeptiert beispielsweise die Eigenschaft onPreRenderFunction. Diese Eigenschaft gibt eine Funktion im Handler an, die bei jeder Ausführung des Handlers automatisch aktiviert wird. In diesem Fall könnten Sie den Handler wie folgt schreiben:
handler myPage type JSFHandler
    {onPreRenderFunction = refreshFunction}

    function refreshFunction()
    end

end
In diesem Beispiel ist für onPreRenderFunction der Name der Funktion refreshFunction angegeben. Der Handler muss eine Funktion dieses Namens enthalten, da EGL andernfalls einen Gültigkeitsfehler ausgibt.

Einige Eigenschaften werden zur Kompatibilität mit Vorgängerversionen oder migriertem Code bereitgestellt und für neue EGL-Anwendungen nicht benötigt. Die EGL-Sprachreferenz enthält Themen zu den einzelnen Abschnitten und deren Eigenschaften. Dort können Sie ermitteln, welche Eigenschaften für neuen Code bereitgestellt werden und welche Eigenschaften der Kompatibilität dienen.

Eigenschaften vererben und überschreiben

Wenn Sie einen Abschnitt basierend auf einem anderen Abschnitt erstellen, erbt der neue Abschnitt die Eigenschaften des ursprünglichen Abschnitts:
DataItem myRedVar int {color = red} end

Record myRedRecord type BasicRecord
    myField myRedVar;
end
In diesem Fall verhält sich das Feld myField so, als ob Sie die Eigenschaft color für das Feld angegeben hätten.
Zwischen den meisten Variablen werden (wie im folgenden Beispiel) Eigenschaften jedoch nicht übertragen:
myRedInt int {color = red};
myBlueInt int {color = blue};
myBlueInt = myRedInt;
In diesem Fall ist für myBlueInt die Eigenschaft color weiterhin mit blue definiert.

Eine Ausnahme für die Übertragung von Eigenschaften besteht bei Verweisvariablen. Weitere Informationen finden Sie in der EGL-Sprachreferenz im Abschnitt über Eigenschaften.

Sie können die Eigenschaften wie im folgenden Beispiel explizit überschreiben:
DataItem myRedVar int {color = red} end

Record myBlueRecord type BasicRecord
    myField myRedVar {color = blue};
end
In diesem Fall überschreibt das Feld myField den Wert red durch den Wert blue.
Auf diese Weise kann eine Eigenschaft zwar zwei Mal für einen Abschnitt oder eine Variable definiert werden. Dies ist jedoch nicht empfehlenswert. Die letzte Eigenschaftenspezifikation legt den Wert wie im folgenden Beispiel fest:
myBlueVar int {color = red, color = blue};
In diesem Fall wird die Eigenschaft color der Variablen auf den Wert blue gesetzt, weil die zweite Definition die erste überschreibt.

Feedback