Spring Framework:Map - 引用另一个Map的值

时间:2010-08-24 16:59:52

标签: java spring

我有一张地图声明:

<!-- SOME MAP -->
<util:map id="someMap" map-class="java.util.HashMap" 
  key-type="java.lang.String" value-type="java.lang.String" >
     <entry key="0" value="SOME VALUE" />
 <entry key="1" value="SOME VALUE 2" />
 <entry key="default" value="SOME VALUE 3" />
</util:map>

<!-- SOME MAP REFERENCE -->
<util:map id="someMapRef" map-class="java.util.HashMap" 
  key-type="java.lang.String" value-type="java.util.HashMap" >
    <entry key="0" value ref = "someMap" />
    <entry key="default" value="SOME VALUE" />
</util:map>

这有什么问题?有什么建议吗?

3 个答案:

答案 0 :(得分:9)

首先,XML格式不正确,应该是:

<entry key="0" value-ref="someMap"/>

此外,根据您的定义,someMapRef地图bean只能包含java.util.HashMap类型的值,但您尝试设置{{1}的键0的值这是一个String。它可以包含字符串或hashMaps,但不能同时包含两者。

答案 1 :(得分:0)

无效的XML:

<entry key="0" value ref = "someMap" />

删除“值”

答案 2 :(得分:0)

我认为它应该是这样的:

<util:map
    id="someMap"
    map-class="java.util.HashMap"
    key-type="java.lang.String"
    value-type="java.lang.String">
    <entry
        key="0"
        value="SOME VALUE" />
    <entry
        key="1"
        value="SOME VALUE 2" />
    <entry
        key="default"
        value="SOME VALUE 3" />
</util:map>


<!-- type: Map<String, Map<String, String>> -->
<util:map
    id="someMapRef"
    map-class="java.util.HashMap"
    key-type="java.lang.String"
    value-type="java.util.Map">
    <entry
        key="0"
        value-ref="someMap" /> <!-- value-ref not "value ref" -->
        <!-- This is the map constructed above -->

    <entry
        key="SOME_VALUE">
        <map> <!-- and here is another map -->
            <entry
                key="SOME_OTHER_KEY1"
                value="SOME_OTHER_VALUE1" />
            <entry
                key="SOME_OTHER_KEY2"
                value="SOME_OTHER_VALUE2" />
            <entry
                key="SOME_OTHER_KEY3"
                value="SOME_OTHER_VALUE3" />
        </map>
    </entry>
</util:map>