Search the FirstSpirit Knowledge Base
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
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
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
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
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
Okay Danke!
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"))$
Ist es möglich die Locale in der Seitenvorlage zu setzen? Z.B. #global.setLocale(Locale.AUSTRIA) ?
Das wäre noch praktischer!
$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.
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
Habe jetzt die Lösung:
$CMS_SET(#global.locale, class("java.util.Locale").new("DE","AT"))$