2010-08-24 54 views
4

我有地图声明: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> 

有什么不好呢?任何建议?

+0

这是一个有点难以阅读。你能提供更多的代码行吗? – 2010-08-24 17:04:57

回答

9

首先,XML是没有很好地形成的,它应该是:

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

另外,根据您的定义,someMapRef映射bean只能包含java.util.HashMap类型的值,但您要为SOME VALUE的密钥0设置值, h是一个字符串。它可以包含字符串或hashMaps,但不能同时包含这两个字符串。

+0

是的,这是我的错字只是为了填充另一个键值对。 – 2010-08-24 17:16:45

+1

谢谢。有效。 – 2010-08-24 17:17:59

0

不是有效的XML:

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

删除 “值”

+0

我得到“属性参考不允许在地图条目” – 2010-08-24 17:14:20

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>