首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在`value`标记内执行表达式

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

Stack Overflow用户
提问于 2019-02-12 19:12:44
回答 1查看 42关注 0票数 0

我想做这个

代码语言:javascript
复制
<util:set id="datasources" value-type="java.lang.String">
    <value>#{ '${processors}'.split(',') }</value>
</util:set>

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

代码语言:javascript
复制
<util:map id="processors" key-type="java.lang.String" value-type="java.util.Set">
    <entry key="processorTypes" value-ref="datasources"/>
</util:map>

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

但是当我像这样直接设置value

代码语言:javascript
复制
<entry key="processorTypes" value="#{ '${processors}'.split(',') }"/>

它工作得很好,并为我提供了键的值集。

怎么啦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-12 20:00:47

我在这里看到了两件事。首先,你将处理器作为String和map id,这可能会让Spring感到困惑。其次,您的SpEL没有正确定义。以下是建议的解决方案。

代码语言:javascript
复制
    <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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54648816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档