如何在嵌套的 SpEL 表达式中进行字符串连接

How to do string concatination in nested SpEL expression

我正在尝试为嵌套 SpEL 表达式执行 stringConcat -

我正在从 bean 获取主机名

<bean id="localhost" class="java.net.InetAddress" factory-method="getLocalHost" />

现在在另一个 bean 中,我想根据一些正则表达式匹配将输入中的主机名附加到我的构造函数中。

<bean id="worker" class="a.b">
    <constructor-arg value="#{localhost.hostName matches '.*north-usa.*' ? '${taskList}-#{conf.version}-#{localhost.hostName}' : '${taskList}-#{conf.version}' "/>
</bean>

出于某种原因,这是文本字符串的输出,其中只有 taskList 得到解析 -

taskListA-#{conf.version}-#{localhost.hostName}

我要实现

taskListA-someConfVersion-someHostName

到目前为止我已经试过了

<bean id="worker" class="a.b">
    <constructor-arg value="#{localhost.hostName matches '.*north-usa.*' ? "${taskList}-#{conf.version}-#{localhost.hostName}" : "${taskList}-#{conf.version}" "/>
</bean>

<bean id="worker" class="a.b">
    <constructor-arg value="#{localhost.hostName matches '.*north-usa.*' ? '${taskList}-conf.version-localhost.hostName' : '${taskList}-#conf.version' "/>
</bean>

<bean id="worker" class="a.b">
    <constructor-arg value="#{localhost.hostName matches '.*north-usa.*' ? '#(${taskList}-conf.version-localhost.hostName)' : '${taskList}-conf.version' "/>
</bean>

但其中 none 有效。任何帮助将不胜感激。

我不知道 SpEL 中是否有嵌套表达式之类的东西,但我知道如何进行字符串连接:

#{localhost.hostName matches '.*north-usa.*' ? '${taskList}-' + conf.version + '-' + localhost.hostName : '${taskList}-' + conf.version}