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

Labels (1)
1 Solution

Accepted Solutions
thmarx
I'm new here

Re: Leere Variablen im Skript abfragen

Jump to solution

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

Re: Leere Variablen im Skript abfragen

Jump to solution

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
jdrees
I'm new here

Re: Leere Variablen im Skript abfragen

Jump to solution

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
thmarx
I'm new here

Re: Leere Variablen im Skript abfragen

Jump to solution

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
jdrees
I'm new here

Re: Leere Variablen im Skript abfragen

Jump to solution

Okay Danke!

0 Kudos
Peter_Jodeleit
Crownpeak employee
Crownpeak employee

Re: Leere Variablen im Skript abfragen

Jump to solution

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
jdrees
I'm new here

Re: Leere Variablen im Skript abfragen

Jump to solution

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

Das wäre noch praktischer!

0 Kudos
Peter_Jodeleit
Crownpeak employee
Crownpeak employee

Re: Leere Variablen im Skript abfragen

Jump to solution

$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
jdrees
I'm new here

Re: Leere Variablen im Skript abfragen

Jump to solution

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
jdrees
I'm new here

Re: Leere Variablen im Skript abfragen

Jump to solution

Habe jetzt die Lösung:

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

0 Kudos