2009-06-08 12 views
5

Viene visualizzato un errore nella quarta riga che dice: cvc-complex-type.2.4.d: è stato trovato contenuto non valido a partire dall'elemento 'map'. A questo punto non è previsto alcun elemento figlio.Java: Spring Framework: dichiarazione di mappe nidificate

<util:map id="entirePayTypesMap"> 
      <entry key="34"> 
       <value> 
        <map> 
         <entry key="default"> 
           <value> 
           <map key-type="java.lang.Boolean"> 
            <entry key="true" value="3T" /> 
            <entry key="false" value="3U" /> 
           </map> 
           </value> 
         </entry> 
        </map> 
       </value> 
      </entry> 
    </util:map> 

Qualche suggerimento?

risposta

10

Per tipi di valori complessi, non nidificare l'elemento mappa, utilizzare invece gli attributi value-ref. Per impostazione predefinita, gli elementi value accettano solo i valori String.

La proprietà può essere una stringa o può essere convertita nel tipo richiesto utilizzando la macchina JavaEdeans PropertyEditor. Ciò consente agli sviluppatori di applicazioni di scrivere implementazioni di PropertyEditor personalizzate in grado di convertire stringhe in oggetti target arbitrari.

Si noti che questo è consigliato solo per oggetti semplici. Configura oggetti più complessi popolando le proprietà JavaBean con riferimenti ad altri bean.

I suoi dati saranno simili:

<util:map id="mapA" key-type="java.lang.Boolean"> 
    <entry key="true" value="3T" /> 
    <entry key="false" value="3U" /> 
</util:map> 
<util:map id="map1"> 
    <entry key="default" value-ref="mapA"/> 
</util:map> 

<util:map id="mapB" key-type="java.lang.Boolean"> 
    <entry key="true" value="4T" /> 
    <entry key="false" value="4U" /> 
</util:map> 
<util:map id="map2"> 
    <entry key="default" value-ref="mapB"/> 
</util:map> 

<util:map id="entirePayTypesMap"> 
    <entry key="34" value-ref="map1"/> 
    <entry key="35" value-ref="map2"/> 
</util:map> 
2
<util:map id="map1" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.util.HashMap"> 

<entry key="" value-ref="map2"> 

</util:map> 



<util:map id="map2" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.util.HashMap"> 

<entry key="" value-ref="map3"> 

</util:map> 



<util:map id="map3" map-class="java.util.HashMap" key-type="java.lang.String" value-type="java.lang.Boolean"> 

<entry key="" value=""> 

</util:map> 
+0

non è possibile. Il valore sarà lo stesso quando è vero per tutte le voci di map2. –