Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在'value'标记内执行表达式_Java_Spring - Fatal编程技术网

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>