Java 在'value'标记内执行表达式
我想这样做Java 在'value'标记内执行表达式,java,spring,Java,Spring,我想这样做 <util:set id="datasources" value-type="java.lang.String"> <value>#{ '${processors}'.split(',') }</value> </util:set> 但它不起作用-它不分割值,最后我得到processorTypes键中的所有值 但是当我像这样直接设置值时 <entry key="processorTypes" value="#{ '${p
<util:set id="datasources" value-type="java.lang.String">
<value>#{ '${processors}'.split(',') }</value>
</util:set>
但它不起作用-它不分割值,最后我得到processorTypes
键中的所有值
但是当我像这样直接设置值时
<entry key="processorTypes" value="#{ '${processors}'.split(',') }"/>
它工作正常,并为我提供了一组键的值
怎么了?我在这里看到了两件事。首先,将处理器设置为字符串和映射id,这可能会让Spring感到困惑。其次,您的SpEL定义不正确。以下是建议的解决方案
<util:map id="processors" key-type="java.lang.String" value-type="java.util.Set">
<entry key="processorTypes" value-ref="sourcesSet"/>
</util:map>
<bean id="sourcesSet" class="java.util.HashSet">
<constructor-arg value="#{list.split(',')}"/>
</bean>
<bean id="list" class="java.lang.String">
<constructor-arg value="ITEM_1,ITEM_2"/>
</bean>
第一次查看时,我建议检查value type=“java.lang.String”
,因为您需要一个字符串,但要传递一个数组。还要注意${processors}
@MladenSavić中缺少的$
,我需要一组字符串,但如果没有值类型,我会得到一个数组类型的值。理想情况下,我可能需要一些东西来打开
<util:map id="processors" key-type="java.lang.String" value-type="java.util.Set">
<entry key="processorTypes" value-ref="sourcesSet"/>
</util:map>
<bean id="sourcesSet" class="java.util.HashSet">
<constructor-arg value="#{list.split(',')}"/>
</bean>
<bean id="list" class="java.lang.String">
<constructor-arg value="ITEM_1,ITEM_2"/>
</bean>