如何在Spring Expression Language中运行嵌套评估

时间:2016-06-08 14:19:25

标签: spring spring-el

我想使用SPeL,我需要评估配置源中的参数。问题是名称/键是动态的。所以我依靠一个参数来解决另一个参数。 我基本上需要检查布尔参数。

实施例: 部分键/前缀:app.name 完整密钥:$ {app.name} .feature.isEnabled

所以,在SPeL中我尝试了类似的东西:

#{'${app.name}.feature.isEnabled' != null && !'${app.name}.feature.isEnabled'}

但这会编译但不起作用。

如果app.name = my-app,则上面解析为字符串文字: 我的-app.feature.isEnabled

文字本身就可以了,但实际上我需要这个键的值。

如果我尝试用另一个表达式换行,它就不会编译:

#{${'${app.name}.feature.isEnabled'} != null && !${'${app.name}.feature.isEnabled'}}

我尝试了上述不同的变化,但无法使其达到正确的公式。

这可能吗?

1 个答案:

答案 0 :(得分:4)

可能有一些更简单的东西,但这有效......

"#{'${${app.name}.feature.isEnabled}' != null ? '${${app.name}.feature.isEnabled}'.toLowerCase().equals('true') : 'false'}"

但是如果未设置属性,则需要在属性占位符配置器上使用ignore-unresolvable="true"