在 `value` 标记内执行表达式

我想做这个


<util:set id="datasources" value-type="java.lang.String">

    <value>#{ '${processors}'.split(',') }</value>

</util:set>

其中processors属性是一个列表processors=ITEM_1,ITEM_2。然后我希望在另一个 bean 中引用该 bean


<util:map id="processors" key-type="java.lang.String" value-type="java.util.Set">

    <entry key="processorTypes" value-ref="datasources"/>

</util:map>

但它不起作用 - 它不会拆分值,最后我得到了processorTypes键中的所有值。


但是当我value直接这样设置


<entry key="processorTypes" value="#{ '${processors}'.split(',') }"/>

它工作正常,并为我提供了一组键值。


怎么了?


慕哥6287543
浏览 112回答 1
1回答

慕村9548890

我在这里看到了两件事。首先,您将处理器作为 String 和 map id,这可能会让 Spring 感到困惑。其次,您的 SpEL 定义不正确。这是建议的解决方案。&nbsp; &nbsp; <util:map id="processors" key-type="java.lang.String" value-type="java.util.Set">&nbsp; &nbsp; &nbsp; &nbsp; <entry key="processorTypes" value-ref="sourcesSet"/>&nbsp; &nbsp; </util:map>&nbsp; &nbsp; <bean id="sourcesSet" class="java.util.HashSet">&nbsp; &nbsp; &nbsp; &nbsp; <constructor-arg value="#{list.split(',')}"/>&nbsp; &nbsp; </bean>&nbsp; &nbsp; <bean id="list" class="java.lang.String">&nbsp; &nbsp; &nbsp; &nbsp; <constructor-arg value="ITEM_1,ITEM_2"/>&nbsp; &nbsp; </bean>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java