Java:Spring框架:声明嵌套映射
我在第四行看到一个错误,说: cvc复杂类型.2.4.d:发现以元素“map”开头的无效内容。此时不需要任何子元素Java:Spring框架:声明嵌套映射,java,maps,spring,Java,Maps,Spring,我在第四行看到一个错误,说: cvc复杂类型.2.4.d:发现以元素“map”开头的无效内容。此时不需要任何子元素 <util:map id="entirePayTypesMap"> <entry key="34"> <value> <map> <entry key="default">
<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>
有什么建议吗?
<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>
对于复杂的值类型,不要嵌套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>
不可能。对于所有map2条目,如果为true,则该值将相同。