Wir haben ein Problem mit der Verarbeitung einer CMS_SET Variablen in FirstSpirit, wenn ein Cookie-Wert nicht gesetzt ist. Unser Ziel ist es, einen Hash-Wert aus einem Cookie (MY.COOKIE) zu speichern und nur dann in der Ausgabe zu verwenden, wenn er tatsächlich existiert.
Unser Code:
$CMS_SET(set_email_hash)$${cookie != null && cookie["MY.COOKIE"] != null ? cookie["MY.COOKIE"].value : null}$CMS_END_SET$
$CMS_IF(set_email_hash != null && set_email_hash.toString() != null && !set_email_hash.toString().equals(""))$
'hashedUserData': {
'sha256': {
'email': '$CMS_VALUE(set_email_hash, default:"")$'
}
}
$CMS_END_IF$
Erwartetes Verhalten
Wenn MY.COOKIE nicht gesetzt ist, sollte der JSON-Block nicht ausgegeben werden.
Tatsächliches Verhalten
Auch wenn der Cookie nicht existiert, wird folgender JSON-Block ausgegeben:
'hashedUserData': {
'sha256': {
'email': ''
}
}
Debug-Ergebnisse
Um das Problem weiter zu untersuchen, haben wir den Wert von set_email_hash geprüft:
DEBUG: isEmpty() = 'false'
DEBUG: toString() = ''
DEBUG: getClass() = de.espirit.firstspirit.parser.impl.TemplateDocumentImpl
Diverse Fragen tun sich auf:
Warum gibt TemplateDocument.toString() eine nicht-leere Zeichenkette zurück, obwohl die Ausgabe leer erscheint?
Gibt es eine empfohlene Methode, um sicherzustellen, dass ein TemplateDocument wirklich keinen Inhalt hat?
Hat jemand Ideen oder stand vielleicht bereits vor einem ähnlichen Problem?
Vielen Dank &
viele Grüße!