Questions & Answers

SOLVED
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

Type a product name