Questions & Answers

SOLVED
jdrees
I'm new here

Leere Variablen im Skript abfragen

Jump to solution

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

1 Solution

Accepted Solutions

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

View solution in original post

0 Kudos
10 Replies
thmarx
I'm new here

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 Kudos

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 Kudos

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 Kudos

Okay Danke!

0 Kudos

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"))$

Peter

Ist es mรถglich die Locale in der Seitenvorlage zu setzen? Z.B. #global.setLocale(Locale.AUSTRIA) ?

Das wรคre noch praktischer!

0 Kudos

$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.

Peter

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 Kudos

Habe jetzt die Lรถsung:

$CMS_SET(#global.locale, class("java.util.Locale").new("DE","AT"))$

0 Kudos

Type a product name