TimoMeister
Returning Responder

Sprachabhängige Sortierung

Jump to solution

Wie sortiert man eine Liste in FirstSpirit mit mehreren Einträgen abhängig von #global.locale?

Die Liste soll nach "city" sortiert werden.

$CMS_SET(list, [{"city":"Bochum","id":323},{"city":"Aachen","id":123},{"city":"Ähhausen","id":274},{"city":"Ärgerdorf","id":242}])$

Hab das hier in der Community gefunden. Das Beispiel geht aber nur mit einer einfachen Liste.

$CMS_SET(comperator, class("java.text.Collator").instance(#global.locale))$

$CMS_VALUE(list.copy.sort(comperator).toString("<br>\n"))$

1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo,

der Trick ist hier, den Collator nicht als Comparator zu verwenden sondern sich aus dem Collator die passenden "Sortierkriterien" für einzelne Einträge zu holen. In diesem Fall den entsprechenden CollationKey. Das kann man dann gut mit einem Lambda verwenden:

$CMS_SET(list, [

     {"city":"Bochum","id":323},

     {"city":"Aachen","id":123},

     {"city":"Ähhausen","id":274},

     {"city":"Ärgerdorf","id":242}

])$

$CMS_SET(collator, class("java.text.Collator").instance(#global.locale))$

$CMS_VALUE(list.copy.sort(

     x->collator.getCollationKey(x["city"])

).toString("<br>\n"))$

Viele Grüße

Michael

View solution in original post

2 Replies
mbergmann
Crownpeak employee

Hallo,

der Trick ist hier, den Collator nicht als Comparator zu verwenden sondern sich aus dem Collator die passenden "Sortierkriterien" für einzelne Einträge zu holen. In diesem Fall den entsprechenden CollationKey. Das kann man dann gut mit einem Lambda verwenden:

$CMS_SET(list, [

     {"city":"Bochum","id":323},

     {"city":"Aachen","id":123},

     {"city":"Ähhausen","id":274},

     {"city":"Ärgerdorf","id":242}

])$

$CMS_SET(collator, class("java.text.Collator").instance(#global.locale))$

$CMS_VALUE(list.copy.sort(

     x->collator.getCollationKey(x["city"])

).toString("<br>\n"))$

Viele Grüße

Michael

Super!!

Genau das was ich gesucht habe 🙂

0 Kudos