是否可以在spring中为地图添加多个值,例如,我有以下弹簧地图
<property name="abcMap">
<map>
<entry key="615000" value="def"/>
</map>
</property>
我想要实现的目标如下
<property name="abcMap">
<map>
<entry key="615000" value="def" value="abc"/>
</map>
</property>
请告知我们如何在Spring中实现同样的目标。
答案 0 :(得分:1)
根据定义,地图不能为同一个键提供两个值(如果是java,则可以将它们放在列表中,但事实并非如此)。
作为一种解决方案,您可以将它们连接起来,用“,”之类的定义字符分隔,或者为每个值使用不同的键。
答案 1 :(得分:1)
如果要为给定键存储多个值,则值必须是列表:
<property name="abcMap">
<map>
<entry>
<key>
<value>615000</value>
</key>
<list>
<value>def</value>
<value>abc</value>
</list>
</entry>
</map>
</property>
答案 2 :(得分:0)
您需要先创建列表。然后该列表可以插入地图中。
<list id="list1">
<value>abc</value>
<value>def</value>
<map id="emailMap" value-type="java.util.List">
<!-- Map between String key and List -->
<entry key="entry1" value-ref="list1" />
<entry key="entry2" value-ref="list2" />
<map>
然后在你的任何bean中使用这个Map:
<bean id="myBean" class="com.sample.beans">
<property name="emailMap" ref="emailMap" />
</bean>
答案 3 :(得分:0)
使用MultiValueMap
会很酷。不幸的是,spring xsd不支持它们。以下是相关摘录:
<xsd:group name="collectionElements">
<xsd:sequence>
<xsd:element ref="description" minOccurs="0"/>
<xsd:choice minOccurs="0" maxOccurs="unbounded">
<xsd:element ref="bean"/>
<xsd:element ref="ref"/>
<xsd:element ref="idref"/>
<xsd:element ref="value"/>
<xsd:element ref="null"/>
<xsd:element ref="list"/>
<xsd:element ref="set"/>
<xsd:element ref="map"/>
<xsd:element ref="props"/>
<xsd:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded"/>
</xsd:choice>
</xsd:sequence>
</xsd:group>
正如其他人所建议的那样,您可以使用列表作为值的地图。