2010-08-24 53 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>