Bedingungssymbole definieren
Innerhalb des Tags <symbolDefinitions> können Sie mithilfe des Tags <conditionalSymbol> ein Bedingungssymbol definieren.
Ein Bedingungssymbol stellt einen Wert dar, der durch Auswertung einer Reihe von Bedingungsausdrücken erzielt wird.
Wenn einer der Ausdrücke true zurückgibt, verwendet die Anforderungszuordnungsfunktion das Element
für die Berechnung des Rückgabewerts. Wenn ein Element den Bedingungsausdruck erfüllt, wertet die Anforderungszuordnungsfunktion
einen entsprechenden Rückgabeausdruck aus und gibt das Ergebnis zurück. Sobald die Anforderungszuordnungsfunktion ein Ergebnis gefunden hat,
das zurückgegeben werden kann, werden keine weiteren Ausdrücke ausgewertet.
- <name>
- Der Name des Symbols. Diese Zeichenfolge muss mit dem Zeichen
$beginnen.
- <type>
- Der Typ des Werts, den das Symbol zurückgibt. Geben Sie diesen Wert als vollständig qualifizierten Java™-Klassennamen oder als primitives Java-Element an. Der Typ des Symbols kann wahlweise angegeben werden. Wenn er nicht definiert wird, versucht die Anforderungszuordnungsfunktion, den Feldtyp anhand des Ausdrucks zu erstellen. Wenn die Anforderungszuordnungsfunktion den Symboltyp vor der Auswertung des Ausdrucks nicht bestimmen kann, kommt es zu Leistungseinbußen. Daher sollte der Typ angegeben werden, um die beste Leistung zu erzielen.
- <args>
- Die Argumente für das Symbol. Dieser Tag ist optional. Wenn er angegeben wird, müssen Argumente für die Auswertung des Symbols angegeben werden. Weitere Informationen finden Sie im Abschnitt Symbolargumente definieren.
- <if condition="ausdruck">
- Das Attribut
conditiondefiniert einen auszuwertenden Bedingungsausdruck. Der Ausdruck muss einen booleschen Wert zurückgeben. Lautet der Werttrue, versucht die Anforderungszuordnungsfunktion, den Rückgabewert mithilfe des Inhalts des Tags <if> zu bestimmen. Der Tag <if> muss einen, darf aber nicht beide der folgenden Inhalte aufweisen:- Einen Tag <return>. Dieser Tag enthält einen Ausdruck. Wenn der Bedingungsausdruck wahr ist, wertet die Anforderungszuordnungsfunktion den Ausdruck aus und gibt das Ergebnis zurück.
- Eine beliebige Anzahl <if>-Tags, die in diesem Tag <if> verschachtelt sind.
Wenn der Bedingungsausdruck wahr ist, verarbeitet die Anforderungszuordnungsfunktion die
verschachtelten <if>-Tags genauso wie einen Tag <if> auf der Ausgangsebene.
Das heißt, sie wertet den Ausdruck im Attribut
conditionaus und wenn der Ausdruck wahr ist, versucht sie mithilfe des Taginhalts, den Rückgabewert zu bestimmen.
Wichtig: Wenn ein Rückgabewert ermittelt wird, wertet die Anforderungszuordnungsfunktion keine weiteren Ausdrücke aus. Wenn aber ein Bedingungsausdruck in einem Tag <if> wahr ist, jedoch verschachtelte <if>-Tags enthält, deren Bedingungsausdrücke alle nicht wahr sind, wird kein Wert bestimmt. In diesem Fall setzt die Anforderungszuordnungsfunktion die Auswertung nachfolgender Ausdrücke fort.
- <defaultValue>
- Optional. Wenn die Anforderungszuordnungsfunktion alle Bedingungsausdrücke ausgewertet hat,
ohne dass ein Bedingungsausdruck
truezurückgegeben hat, wertet die Anforderungszuordnungsfunktion den Ausdruck im Tag <defaultValue> aus. Das Bedingungssymbol gibt den Wert zurück, den der Ausdruck generiert. Wenn dieser Tag nicht vorhanden ist, lautet der Standardwertnull.
Beispiel
<symbol>
<name>$GET</name>
<eval>"GET"</eval>
</symbol>
<symbol>
<name>$PUT</name>
<eval>"PUT"</eval>
</symbol>
<conditionalSymbol>
<name>$sessionAttribute</name>
<if condition="$httpServletRequest.getSession(false) != null>
<if condition="$httpServletRequest.getSession(false).getAttribute($GET) != null">
<return>$httpServletRequest.getSession(false).getAttribute($GET)</return>
</if>
<if condition="true">
<return>$httpServletRequest.getSession(false).getAttribute($PUT)</return>
</if>
</if>
</conditionalSymbol>
Für dieses Symbol wird angenommen, dass es zur Anforderungszuordnungsfunktion des Servlets gehört.
Zunächst überprüft es, ob eine HTTP-Sitzung für das Servlet vorhanden ist.
Ist dies nicht der Fall, gibt das Symbol null zurück.
Wenn eine Sitzung vorhanden ist, überprüft das Symbol, ob das Servlet über ein GET-Attribut verfügt.
Wenn ja, gibt es den Wert dieses Attributs zurück. Andernfalls wird der Wert des PUT-Attributs
zurückgegeben. Der zweite Bedingungsausdruck ist 'true'; dieser Wert wird als Klausel 'else'
verwendet. Wenn die erste Bedingung wahr ist, wertet die Anforderungszuordnungsfunktion keine weiteren Ausdrücke aus.
Andernfalls fährt sie mit dem zweiten Ausdruck fort.