我正在尝试在Spring中实现这个Java数据结构(我是新手):
Map<String, List<String>>
我尝试了以下(以及它的变体),但我得到以下异常:
Caused by: org.xml.sax.SAXParseException; lineNumber: XX; columnNumber: YY; cvc-complex-type.2.4.d: Invalid content was found starting with element 'util:list'. No child element is expected at this point.
有人可以告诉我我犯的错误吗?我需要能够使用文字键(String)和值列表构建上面提到的“Map”数据结构。我收录了twp完整的样本“条目”(这些条目不起作用)只是为了显示我想要创建的填充模式。
<bean .... >
...
<property name="monitoredObjects">
<util:map map-class="java.util.HashMap">
<entry key="java.lang:type=GarbageCollector,name=ConcurrentMarkSweep">
<value>
<util:list>
<value>HeapMemoryUsage</value>
<value>NonHeapMemoryUsage</value>
</util:list>
</value>
</entry>
<entry key="java.lang:type=FOO,name=BAR">
<value>
<util:list>
<value>YADA-YADA</value>
<value>BLAH-BLAH</value>
</util:list>
</value>
</entry>
</util:map>
</property>
...
</bean>
谢谢! =:)
答案 0 :(得分:1)
我修改了一些并通过删除包含util:list元素的“value”元素来使其工作。换句话说,像这样:
<bean .... >
...
<property name="monitoredObjects">
<util:map map-class="java.util.HashMap">
<entry key="java.lang:type=GarbageCollector,name=ConcurrentMarkSweep">
<util:list>
<value>HeapMemoryUsage</value>
<value>NonHeapMemoryUsage</value>
</util:list>
</entry>
<entry key="java.lang:type=FOO,name=BAR">
<util:list>
<value>YADA-YADA</value>
<value>BLAH-BLAH</value>
</util:list>
</entry>
</util:map>
</property>
...
</bean>
一如既往地谢谢你!
答案 1 :(得分:0)
首先在applicationContext.xml中定义这样的Map:
<util:list id="list1">
<value>foo@bar.com</value>
<value>foo1@bar.com</value>
</util:list>
<util:list id="list2">
<value>foo2@bar.com</value>
<value>foo3@bar.com</value>
</util:list>
<util: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" />
...
</util:map>
然后在你的任何bean中使用这个Map:
<bean id="myBean" class="com.sample.beans">
<property name="emailMap" ref="emailMap" />
</bean>