2010-08-24 9 views
4

J'ai une déclaration de carte:Spring Framework: Carte - Valeur Référencer à une autre carte

<!-- 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> 

Quel est le problème avec ça? Toute suggestion?

+0

C'est un peu difficile à lire. Pouvez-vous fournir plus de lignes de code? –

Répondre

9

Tout d'abord, le XML est pas bien formé, il devrait être:

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

En outre, selon votre définition , le bean map someMapRef ne peut contenir que des valeurs de type java.util.HashMap, mais vous essayez de définir une valeur pour la clé 0 de SOME VALUE, whic h est une chaîne. Il peut contenir des chaînes ou des hashMaps, mais pas les deux.

+0

Oui, c'était mon erreur de faute de frappe juste pour remplir l'autre paire clé-valeur. –

+1

MERCI. Ça a marché. –

0

Non XML valide:

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

supprimer "valeur"

+0

Je reçois "l'attribut ref n'est pas autorisé dans l'entrée de la carte" –

0

Je pense que cela devrait fonctionner comme ceci:

<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> 
Questions connexes