- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Leere Variablen im Skript abfragen
Hallo,
ich habe ein Skript, dass innerhalb einer Absatzvorlage ausgeführt wird. Es geht darum eine Datumsausgabe abhängig von Gesellschaft zu erstellen. Z.B. DE-> Januar AT-> Jänner.
Als default, d.h. wenn kein Datum übergeben wird soll das aktuelle Datum genommen werden.
Ich habe es so gelöst:
import de.espirit.firstspirit.parser.eval.Undefined;
if(gc.getVariableValue("date") instanceof Undefined) date=new Date();
else date=gc.getVariableValue("date");
Bin ich da auf dem richtigen Weg oder gibt es eine einfachere Möglichkeit?
Gruß
Julian
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Herr Drees,
jetzt ist es mir aufgefallen. die isEmpty Methode funktioniert natürlich nicht auf einem Date Objekt, daher kann sie hier auch nicht verwendet werden.
CMS_RENDER kann ja mit beliebigen Objekten aufgerufen werden. Daher werden sie auf ein instanceof nicht verzichten können:
if (gc.getVariableValue("date") instanceof java.util.Date)
date = gc.getVariableValue("date");
else
date = new Date();
So hat es bei mir funktioniert.
Viele Grüße
Thorsten Marx
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Herr Drees,
für die Abfrage, ob ein Wert gesetzt ist oder nicht, können sie isEmpty() verwenden:
if(gc.getVariableValue("date").isEmpty()) date=new Date();
Viele Grüße
Thorsten Marx
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Es will noch nicht so recht!
Das ist mein Aufruf:
$CMS_SET(newDate, class("java.util.Date").new(113,0,01,0,0,0))$
$CMS_RENDER(script:"skript", date:newDate)$
Das ist mein Skript:
if(gc.getVariableValue("date").isEmpty()) date=new Date();
else date=gc.getVariableValue("date");
returnVar=date;
result.setValue(returnVar);
Wenn ich kein "date" übergebe bekomme ich das aktuelle Datum - ist ja richtig
Wenn ich aber als "date" newDate übergebe bekomme ich keine Ausgabe mehr.
Was habe ich falsch gemacht?
Gruß
Julian
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Herr Drees,
jetzt ist es mir aufgefallen. die isEmpty Methode funktioniert natürlich nicht auf einem Date Objekt, daher kann sie hier auch nicht verwendet werden.
CMS_RENDER kann ja mit beliebigen Objekten aufgerufen werden. Daher werden sie auf ein instanceof nicht verzichten können:
if (gc.getVariableValue("date") instanceof java.util.Date)
date = gc.getVariableValue("date");
else
date = new Date();
So hat es bei mir funktioniert.
Viele Grüße
Thorsten Marx
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Okay Danke!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wieso wird hier überhaupt ein Skript benötigt? Als Template-Code würde das so aussehen:
$CMS_VALUE(date.format("MMMM", "de_at"), default:#global.now.format("MMMM", "de_at"))$
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ist es möglich die Locale in der Seitenvorlage zu setzen? Z.B. #global.setLocale(Locale.AUSTRIA) ?
Das wäre noch praktischer!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
$CMS_SET(#global.locale, class("java.util.Locale").AUSTRIA)$
Das muss aber auch wieder zurückgesetzt werden, da der globale Kontext auch für alle folgenden Seiten in der Generierung gilt.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Scheinbar ist die Locale nicht bekannt, er springt dann immer auf "en_US" zurück. Aber warum ist dem GregorianCalendar dann die Locale "de_AT" bekannt?
$CMS_SET(#global.locale, class("java.util.Locale").new("de_at"))$ funktioniert.
Aber erstellt dann natürlich eine leere Locale
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Habe jetzt die Lösung:
$CMS_SET(#global.locale, class("java.util.Locale").new("DE","AT"))$

