2009-06-08 11 views
5

consigo un error en cuarta línea que diga: CVC-complejo-type.2.4.d: se encontró contenido no válido a partir de elemento de 'mapa'. No se espera ningún elemento hijo en este punto.Java: Spring Framework: Declarar anidadas Mapas

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

¿Alguna sugerencia?

Respuesta

10

Para los tipos de valor complejas, no anidan el elemento de mapa, en lugar de utilizar value-ref atributos. Por defecto, los elementos value sólo aceptan String valores.

La propiedad puede ser una cadena, o puede convertirse al tipo requerido utilizando la maquinaria JavaBeans PropertyEditor. Esto posibilita que los desarrolladores de aplicaciones creen implementaciones personalizadas de PropertyEditor que pueden convertir cadenas en objetos de destino arbitrarios.

cuenta que este es recomendado solo para objetos simples. Configure objetos más complejos al rellenar las propiedades de JavaBean con referencias a otros beans.

Sus datos serán algo como:

<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

No es posible. El valor será el mismo cuando sea verdadero para todas las entradas de map2. –

Cuestiones relacionadas