2013-03-21 9 views
5

Ich verwende Spring EL, um Werte aus einem ziemlich komplexen Satz von verschachtelten Maps und Listen zu ziehen. Ich möchte einen Ausdruck wie der Ausnahme, dass [9]['firstSubKey']Spring EL: Sichere Navigation mit Kartenzugriff

[9]['firstSubKey']['secondSubKey'] 

in der Lage sein zu verwenden, könnte null sein. Ich kann nicht herausfinden, wie die sichere Navigation verwendet richtig: Ich habe versucht

[9]['firstSubKey']?['secondSubKey'] 

und

[9]['firstSubKey']?.['secondSubKey'] 

und beide eine Art von Parse-Fehler zurückgegeben. Ich habe es schließlich mit

[9]['firstSubKey']?.get('secondSubKey') 

arbeiten, aber das fühlt sich klebrig an. Gibt es einen besseren Weg oder ist das nur ein Feature, das SpringEL nicht hat? Ich benutze Frühling 3.1.3.

In Verbindung damit, wenn ich eine Liste/Array einer unbekannten Anzahl von Elementen habe, gibt es eine Möglichkeit, sicher zu überprüfen? IE wenn ich ein Array von 4 Elementen habe, möchte ich [5] Null zurückgeben. Wie es ist, wirft es eine SpelEvaluationException.

Antwort

1

Ich konnte keine bessere Lösung für Ihre finden; nur

"['0']['a'] != null ? ['0']['a']['b'] : null"

und

"size() > 5 ? [5] : null"