Leere Variablen im Skript abfragen
Author: jdrees
Publication Date: 12/10/2012 10:52
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
Tags: beanshell, date, leere, undefinded, variable
-
Author: thmarx - 12/10/2012 13:05
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
0 -
Author: jdrees - 12/10/2012 13:26
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
0 -
Author: thmarx - 12/10/2012 13:54
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
0 -
Author: jdrees - 12/10/2012 13:56
Okay Danke!
0 -
Author: Peter_Jodeleit - 12/10/2012 15:09
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"))$
0 -
Author: jdrees - 12/11/2012 7:52
Ist es möglich die Locale in der Seitenvorlage zu setzen? Z.B. #global.setLocale(Locale.AUSTRIA) ?
Das wäre noch praktischer!
0 -
Author: Peter_Jodeleit - 12/11/2012 8:22
$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.
0 -
Author: jdrees - 12/11/2012 9:53
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
0 -
Author: jdrees - 12/11/2012 10:57
Habe jetzt die Lösung:
$CMS_SET(#global.locale, class("java.util.Locale").new("DE","AT"))$
0
Vous devez vous connecter pour laisser un commentaire.
Commentaires
9 commentaires