Spring EL:使用地图访问进行安全导航

Dan*_*Dan 6 java spring spring-el

我正在使用Spring EL从一组相当复杂的嵌套映射和列表中提取值.我希望能够使用像这样的表达式

[9]['firstSubKey']['secondSubKey']
Run Code Online (Sandbox Code Playgroud)

除了[9]['firstSubKey']可能是null.我无法弄清楚如何正确使用安全导航:我试过了

[9]['firstSubKey']?['secondSubKey']
Run Code Online (Sandbox Code Playgroud)

[9]['firstSubKey']?.['secondSubKey']
Run Code Online (Sandbox Code Playgroud)

并且都返回了某种解析错误.我最终通过使用它得到了它

[9]['firstSubKey']?.get('secondSubKey')
Run Code Online (Sandbox Code Playgroud)

但这感觉很俗气.有没有更好的方法或者这只是SpringEL没有的功能?我正在使用Spring 3.1.3.

相关地,如果我有一个未知数量的元素的列表/数组,有没有办法安全地检查它?IE如果我有一个包含4个元素的数组,我想[5]返回null.它会抛出一个SpelEvaluationException.

Gar*_*ell 1

我无法为你提供更好的解决方案;仅有的

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

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