Java:Spring框架:声明嵌套映射

5 java maps spring

我在第4行收到错误说:cvc-complex-type.2.4.d:从元素'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> 
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Cha*_*ick 10

对于复杂值类型,请勿嵌套地图元素,而是使用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>
Run Code Online (Sandbox Code Playgroud)