2009-06-08 5 views
5

Ich erhalte einen Fehler in der 4. Zeile mit der Aussage: cvc-complex-type.2.4.d: Ungültiger Inhalt wurde gefunden, beginnend mit Element 'map'. Zu diesem Zeitpunkt wird kein untergeordnetes Element erwartet.Java: Spring Framework: Nested Maps deklarieren

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

Irgendwelche Vorschläge?

Antwort

10

Für komplexe Werttypen, tun das Kartenelement nicht verschachtelt werden, anstatt value-ref Attribute verwenden. Standardmäßig akzeptieren value Elemente nur String Werte.

Die Eigenschaft kann eine Zeichenfolge sein oder mithilfe der JavaBeans PropertyEditor-Maschinerie in den erforderlichen Typ konvertiert werden. Dadurch können Anwendungsentwickler benutzerdefinierte PropertyEditor-Implementierungen schreiben, die Zeichenfolgen in beliebige Zielobjekte konvertieren können.

Beachten Sie, dass dies nur für einfache Objekte empfohlen wird. Konfigurieren Sie komplexere Objekte, indem Sie JavaBean-Eigenschaften mit Referenzen auf andere Beans füllen.

Ihre Daten werden in etwa so aussehen:

<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

Nicht möglich. Der Wert ist derselbe, wenn er für alle map2-Einträge gilt. –