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

YaO*_*aOg 2 spring spring-el

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

示例:部分键/前缀:app.name全键:$ {app.name} .feature.isEnabled

因此,在SPeL中,我尝试如下操作:

#{'${app.name}.feature.isEnabled' != null && !'${app.name}.feature.isEnabled'}
Run Code Online (Sandbox Code Playgroud)

但这可以编译但不起作用。

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

文字本身本身就可以,但是我实际上需要此键的值。

如果我尝试用另一个表达式包装,它将无法编译:

#{${'${app.name}.feature.isEnabled'} != null && !${'${app.name}.feature.isEnabled'}}
Run Code Online (Sandbox Code Playgroud)

我尝试了上述方法的不同变体,但无法采用正确的公式。

这可能吗?

Gar*_*ell 5

可能更简单一些,但这可以工作...

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

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