6

我在第 4 行收到一条错误消息:cvc-complex-type.2.4.d: Invalid content was found started with element 'map'。此时不需要子元素。

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

有什么建议么?

4

2 回答 2

11

对于复杂的值类型,不要嵌套 map 元素,而是使用value-ref属性。默认情况下,value元素只接受String值。

该属性可以是字符串,也可以使用 JavaBeans PropertyEditor 机制转换为所需的类型。这使得应用程序开发人员可以编写可以将字符串转换为任意目标对象的自定义 PropertyEditor 实现。

请注意,这仅建议用于简单对象。通过使用对其他 bean 的引用填充 JavaBean 属性来配置更复杂的对象。

您的数据将类似于:

<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>
于 2009-06-08T08:09:39.587 回答
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>
于 2009-06-08T06:15:34.933 回答