Startseite / Vorlagenentwicklung / Vorlagensyntax / Funktionen / in Anweisungen / class

class(...)

Inhaltsverzeichnis

Wird der Funktion class(...) der vollqualifizierte Klassenname übergeben, liefert sie das konkrete Klassenobjekt zurück. Die Funktion kann im Vorlagensatz einer Vorlage verwendet werden.

Wichtig Die Funktion sollte generell sehr umsichtig eingesetzt werden, da die Verwendung relativ schnell zu einer Vielzahl von Abhängigkeiten führen kann. Zudem wird die eigentlich einfache und gut verständliche Vorlagensyntax durch die Verwendung der Funktion unnötig kompliziert und der zugrundeliegende Code dadurch schlecht wartbar.

Es wird empfohlen, die Funktion nur für Ressourcen einzusetzen, die im scope „server“ (also im serverweiten Gültigkeitsbereich) liegen. Hier gilt: Klassen aus serverweit-definierten Jars können keine Klassen aus modul-lokal definierten Jars benutzen. Der umgekehrte Weg ist jedoch möglich.

Für projektspezifische Modul-Implementierungen (scope „module“) ist die Funktion nicht geeignet, da diese, soweit das möglich ist, modul-lokal definiert werden sollten. Hier sollte auf Executables zurückgegriffen werden.

Anwendungbeispiele

Nachfolgend werden einige praktische Anwendungsfälle für die Funktion vorgestellt.

Typisierte Filter verwenden

Die Funktion kann verwendet werden, um eine Ergebnismenge auf bestimmte Objekttypen zu filtern, z. B.:

$CMS_FOR(for_section,#global.page.children(class("de.espirit.firstspirit.access.store.pagestore.Section"),true))$

In diesem Aufruf wird rekursiv über alle Kinder einer Seite iteriert. Über die Funktion class(...) wird hier ein Filter auf eine bestimmte Klasse "de.espirit.firstspirit.access.store.pagestore.Section" gesetzt.

Auf- und Abrunden in der Ausgabe

Über die Funktion kann auch auf die statischen Methoden global-verfügbarer Klassen zugegriffen werden.

Syntax: class("...").staticMethod(...))

Die Klasse Math stellt z. B. eine Reihe mathematischer Funktionen (in Form von statischen Methoden) zur Verfügung, die u.a. zum Auf- oder Abrunden innerhalb der Ausgabe verwendet werden können:

$CMS_VALUE(class("java.lang.Math").round(5.5))$

Hier wird über die Methode round der übergebene Wert auf eine Ganzzahl aufgerundet und ausgegeben. Natürlich kann der so ermittelte Wert auch in einer Variable gespeichert werden:

$CMS_SET(rounded, class("java.lang.Math").round(5.5))$ 
$CMS_VALUE(rounded)$

Zähler erzeugen und verwenden

Eine weitere Verwendungsmöglichkeit für die Funktion bietet der Aufruf von class("...").new([...]). Dieser ruft den Konstruktor des Klassenobjekts mit bzw. ohne Parameter auf. Auf diese Weise kann innerhalb einer Vorlage z. B. ein Zähler vom Typ AtomicInteger verwendet werden, um Einträge für ein Inhaltsverzeichnis zu zählen und auszugeben: 

$CMS_SET(_chapter, class("java.util.concurrent.atomic.AtomicInteger").new)$
$CMS_VALUE(_chapter.incrementAndGet)$

Klassenabhängige Ausgabe mit "isCase"

Mit folgender Syntax kann die Ausgabe abhängig von einer Klasse, z. B. java.lang.String, java.math.BigInteger usw., gemacht werden. Dazu kann die Methode isCase verwendet werden. Dies entspricht dem Java-Konstrukt „instanceof“ (Typprüfung, z. B. var instanceof java.lang.String).

$CMS_IF(class("java.lang.String").isCase(_var))$
String
$CMS_END_IF$

Handelt es sich in diesem Beispiel bei „_var“ um eine Zeichenkette (Klasse java.lang.String), wird „String“ ausgegeben, ansonsten erfolgt keine Ausgabe.

Eine Prüfung gegen mehrere Klassen ist hingegen mit $CMS_SWITCH(...)$ möglich.

© 2005 - 2024 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2024.4 | Datenschutz