有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在Spring中构造Map<String,List<String>>数据结构

我试图在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.

有人能告诉我我犯了什么错误吗?我需要能够用文本键(字符串)和值列表构建上述“映射”数据结构。我包含了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>

谢谢!=:)


共 (2) 个答案

  1. # 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>
    

    一如既往地感谢您的关注

  2. # 2 楼答案

    首先在applicationContext中定义这样的映射。xml:

     <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中使用此映射,如下所示:

    <bean id="myBean" class="com.sample.beans">
          <property name="emailMap" ref="emailMap" />
       </bean>