Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Beispiel Datumsangaben Vergleichen

...

String Manipulation

Freemarker besitzt viele sog. built-ins zur Manipulation von Strings, also Zeichenketten.

Folgender Ausdruck gibt unseren ${name!} in GROßBUCHSTABEN aus:

Code Block
${name!?upper_case}

Das Fragezeichen ? wendet das  "built-in" upper_case auf die Variable name an.


Info
titleMehrere Funktionen gleichzeitig

Man kann mehrere Freemarker built-ins hintereinander hängen ("chain").

Beispiel:

${SPALTENNAME!?remove_beginning("|")?remove_ending("|")?trim}

Dieses Beispiel würde vorn und hinten das Pipe-Zeichen entfernen und am Schluss auch noch trimmen, d.h. die Leerzeichen hinten und vorn entfernen. 


Zahlen Manipulation und Rechnen (arithmetische Funktionen)

Freemarker besitzt built-ins zur Manipulation von Zahlen.

Code Block
${price?number?string.currency}

Die Ausgabe ist $42.00 Die verwendete Locale ist die des Servers, d.h. en_US. Das ?number Built-In ist notwendig, um aus einem String erst eine Zahl zu machen. Wenn die entsprechende Variable bereits eine Zahl ist, is ?number nicht notwendig.  
Um den Preis in deutscher Locale auszugeben wäre es

Code Block
<#setting locale="de_DE">
${price?number?string.currency} 

Die Ausgaben wäre bei de_DE 42,00 €


Info
titlePunkt als Dezimaltrenner

Hinweis: Freemarker erwartet bei mathematischen Funktionen immer einen Punkt als Dezimaltrenner. D.h. falls Zahlen mit Komma als Dezimaltrenner existieren, muss das Komma erst durch einen Punkt ersetzt werden. Eine Möglichkeit wäre, dazu die ?replace Funktion zu benutzen: 

Code Block
${OrderTotalGross?replace(",",".")?number + OrderShippingCosts?replace(",",".")?number} 


Rechnen

Mit Freemarker kann man auch rechnen. Lesen Sie dazu mehr über arithmetische Funktionen.

Beispiel:

Code Block
${1 + 2}
# gibt 3 aus
 
${spalte1?number + spalte2?number}
# gibt die Summer von zwei Spalten aus.
 

Datumsfunktionen

Datumsmanipulation ist auch mit Freemarker möglich.
Code Block
<#assign purchaseDate = .now> 
${purchaseDate?string('yyyy-MM-dd HH:mm:ss zzzz')}

Ausgabe ist z.B. 2013-07-12 19:19:15 Central European Summer Time


Datumsangaben Vergleichen


Code Block
languagexml
titleVergleich zweier Datumsangaben
<#if ("2020-12-11 20:09:42"?datetime('yyyy-MM-dd HH:mm:ss') > "2020-12-10 10:09:42"?datetime('yyyy-MM-dd HH:mm:ss')) >.
Das erste Datum ist neuer.
<#else>
Das erste Datum ist älter.
</#if>

Bedingungen / Boolean expressions (IF/ELSE)

Wenn/Dann Logik wird durch sog. Boolesche Ausdrücke realisiert. Damit lassen sich Spalteninhalte in Abhängigkeit von anderen Quellspalten manipulieren.

Zum Beispiel könnte man sagen, dass die Versandkosten 0 EUR betragen sollen, wenn der Preis größer 100 EUR ist. Ansonsten könnten die Versandkosten 5 EUR betragen.  

Code Block
titleBeispiel Versandkosten
<#if (price?number >= 100)>0 EUR<#else>5 EUR</#if>


Code Block
titleBeispiel Prüfung, ob eine Zeichenkette ein bestimmtes Zeichen enthält
<#if name?contains('u')>
This is a name containing the letter 'u'
<#else>
No 'u' contained
</#if>


IF/ELSE mit String-Vergleichen:

Code Block
<#if brandname! == ''>
Brandname is empty.
<#else>
${brandname!}
</#if>

Bei Vergleichen von Zeichenketten sollten Sie auf Leerzeichen achten und diese ggf. mit ?trim entfernen bzw. "wegschneiden". 

Code Block
<#if brandname!?trim == ''>
Brandname is really empty (spaces trimmed).
<#else>
${brandname!}
</#if>


Prüfen, ob Zeichenkette mit einem bestimmten Prefix startet (siehe starts_with)

Code Block
<#if brandname!?starts_with('myprefix')>
Yes, brandname starts with myprefix
<#else>
No, brandname does not start with the prefix.
</#if>


...