nick
I'm new here

Unterschied zwischen isNull() und isEmpty()

Jump to solution

In Templates kann sowohl mit isNull() als auch mit isEmpty() auf leere Formularwerte geprüft werden:

$CMS_IF(!st_text.isEmpty)$CMS_VALUE(st_text)$$CMS_END_IF$

$CMS_IF(!st_text.isNull)$CMS_VALUE(st_text)$$CMS_END_IF$

Was genau ist der Unterschied?

Gibt es eine Dokumentation zu solchen Methoden?

0 Kudos
1 Solution

Accepted Solutions
j_mueller
Elite Observer

Hallo,

also das lässt sich sich relativ einfach an folgendem Beispiel erklären:

myNull.isNull: $CMS_VALUE(myNull.isNull)$

myNull.isEmpty: $CMS_VALUE(myNull.isEmpty)$

$CMS_SET(myString, "")$

myString.isNull: $CMS_VALUE(myString.isNull)$

myString.isEmpty: $CMS_VALUE(myString.isEmpty)$

$CMS_SET(myList, [])$

myList.isNull: $CMS_VALUE(myList.isNull)$

myList.isEmpty: $CMS_VALUE(myList.isEmpty)$

Ergibt folgende Ausgabe:

myNull.isNull: true

myNull.isEmpty: true

myString.isNull: false

myString.isEmpty: true

myList.isNull: false

myList.isEmpty: true

Zusammenfassend kann man wohl behaupten der Wert NULL ist auch immer "empty" umgekehrt aber nicht. isEmpty prüft also Typ-Abhängig, isNull nicht. Wir verwenden in der Regel isEmpty, da das häufig der Logik entspricht mit der man im Template Entscheidungen treffen möchte.

Ich bin mir nicht sicher, ob man es propagieren sollte, aber isEmpty lässt sich auch einfacher schreiben:

$CMS_IF(myValue.empty)$  ...

Funktioniert einwandfrei und klappt auch mit den meisten get-Funktionen Smiley Wink

Unter Vorlagenentwicklung -> Vorlagensyntax -> Datentypen steht was diese so können.

Beste Grüße

Julius Müller

View solution in original post

0 Kudos
5 Replies
j_mueller
Elite Observer

Hallo,

also das lässt sich sich relativ einfach an folgendem Beispiel erklären:

myNull.isNull: $CMS_VALUE(myNull.isNull)$

myNull.isEmpty: $CMS_VALUE(myNull.isEmpty)$

$CMS_SET(myString, "")$

myString.isNull: $CMS_VALUE(myString.isNull)$

myString.isEmpty: $CMS_VALUE(myString.isEmpty)$

$CMS_SET(myList, [])$

myList.isNull: $CMS_VALUE(myList.isNull)$

myList.isEmpty: $CMS_VALUE(myList.isEmpty)$

Ergibt folgende Ausgabe:

myNull.isNull: true

myNull.isEmpty: true

myString.isNull: false

myString.isEmpty: true

myList.isNull: false

myList.isEmpty: true

Zusammenfassend kann man wohl behaupten der Wert NULL ist auch immer "empty" umgekehrt aber nicht. isEmpty prüft also Typ-Abhängig, isNull nicht. Wir verwenden in der Regel isEmpty, da das häufig der Logik entspricht mit der man im Template Entscheidungen treffen möchte.

Ich bin mir nicht sicher, ob man es propagieren sollte, aber isEmpty lässt sich auch einfacher schreiben:

$CMS_IF(myValue.empty)$  ...

Funktioniert einwandfrei und klappt auch mit den meisten get-Funktionen Smiley Wink

Unter Vorlagenentwicklung -> Vorlagensyntax -> Datentypen steht was diese so können.

Beste Grüße

Julius Müller

0 Kudos

Vielen Dank. So ungefähr hatte ich mir das schon gedacht. Dann hängt es also vom Datentyp ab, wie sich die Methode isEmpty verhält. In der Dokumentation ist mir noch aufgefallen, dass das gleiche auch für die Methode isNull gilt, d.h. auch bei dieser Methode entscheidet der Datentyp selbst, wann er null ist.

0 Kudos

Welche Stelle meinen Sie da?

$CMS_VALUE(null.isNull)$ liefert "true" (und keine Exception), alternativ kann man auch $CMS_VALUE(x == null)$ verwenden, für Java-Entwickler sollte das die "natürlichere" Schreibweise sein.

Peter
0 Kudos

Das ist tatsächlich missverständlich ausgedrückt. Was dort gemeint ist, das Eingabekomponenten einen Wert != null liefern können, auch wenn kein Wert explizit gesetzt wurde, und daher der Benutzung von "isEmpty" besser geeignet ist.

Peter
0 Kudos