Spring 如何在Java中注入嵌套的map.entries?

Spring 如何在Java中注入嵌套的map.entries?,spring,collections,map,Spring,Collections,Map,我正在尝试获取第二个条目的值,并使用isues。提前感谢你的帮助 这是我的密码: <util:map id="externalUrlMap" map-class="java.util.HashMap"> <entry key="privacy"> <util:map map-class="java.util.HashMap"> <entry key="en" value="${exit.pr

我正在尝试获取第二个条目的值,并使用isues。提前感谢你的帮助

这是我的密码:

<util:map id="externalUrlMap" map-class="java.util.HashMap">
    <entry key="privacy">        
        <util:map map-class="java.util.HashMap">
            <entry key="en" value="${exit.privacy.url.en}"/>
            <entry key="fr" value="${exit.privacy.url.fr}"/>        
        </util:map>        
    </entry>
   <entry key="logout">        
        <util:map map-class="java.util.HashMap">
            <entry key="en" value="${exit.logout.url.en}"/>
            <entry key="fr" value="${exit.logout.url.fr}"/>        
        </util:map>        
    </entry>
</util:map>

和控制器

String urlType = "privacy";
    // Using Iterator to loop externalUrlMap
    Iterator<Map.Entry<String, Entry<String, String>>> entries = externalUrlMap.entrySet().iterator();  

    // Start Iterator 
    while (entries.hasNext()) {             
          Map.Entry<String, List<String>> entry = entries.next();

          if (entry.getKey().equalsIgnoreCase(urlType)){
              String key = entry.getKey();
              //Object value = entry.getValue().en; 
              List<String> list =  entry.getValue();
                //first item
                String first = list.get(0);
                //second item  
                 String second = list.get(1);

              System.out.println(key + "" + ""+ first +""+ second );
          }
    }
String urlType=“隐私”;
//使用迭代器循环externalUrlMap
迭代器条目=externalUrlMap.entrySet().Iterator();
//启动迭代器
while(entries.hasNext()){
Map.Entry=entries.next();
if(entry.getKey().equalsIgnoreCase(urlType)){
String key=entry.getKey();
//对象值=entry.getValue().en;
List=entry.getValue();
//第一项
String first=list.get(0);
//第二项
字符串秒=list.get(1);
System.out.println(键+“”+“”+第一个+“”+第二个);
}
}
这就是我得到的错误 类型不匹配:无法从迭代器>转换为迭代器>>
非常感谢。

为了测试,我做了以下最低限度的设置。访问值direkt没有问题

import java.util.Map;

import org.springframework.context.support.GenericXmlApplicationContext;

public class Test {
    public static void main(String[] args) {
        GenericXmlApplicationContext context = new GenericXmlApplicationContext("/application-context.xml");
        Map<String, Map<String, String>> externalUrlMap = (Map<String, Map<String, String>>)context.getBean("externalUrlMap");

        System.out.println(externalUrlMap.get("privacy").get("en"));
        System.out.println(externalUrlMap.get("privacy").get("fr"));
        System.out.println(externalUrlMap.get("logout").get("en"));
        System.out.println(externalUrlMap.get("logout").get("fr"));


    }
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:context="http://www.springframework.org/schema/context" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd         
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd         
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

<bean 
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

        <property name="location">
            <value>url.properties</value>
        </property>
    </bean>


    <util:map id="externalUrlMap" map-class="java.util.HashMap">
    <entry key="privacy">        
        <util:map map-class="java.util.HashMap">
            <entry key="en" value="${exit.privacy.url.en}"/>
            <entry key="fr" value="${exit.privacy.url.fr}"/>        
        </util:map>        
    </entry>
   <entry key="logout">        
        <util:map map-class="java.util.HashMap">
            <entry key="en" value="${exit.logout.url.en}"/>
            <entry key="fr" value="${exit.logout.url.fr}"/>        
        </util:map>        
    </entry>
</util:map>

</beans>
import java.util.Map;
导入org.springframework.context.support.GenericXmlApplicationContext;
公开课考试{
公共静态void main(字符串[]args){
GenericXmlApplicationContext上下文=新的GenericXmlApplicationContext(“/application context.xml”);
Map externalUrlMap=(Map)context.getBean(“externalUrlMap”);
System.out.println(externalUrlMap.get(“privacy”).get(“en”);
System.out.println(externalUrlMap.get(“隐私”).get(“fr”);
System.out.println(externalUrlMap.get(“logout”).get(“en”);
System.out.println(externalUrlMap.get(“logout”).get(“fr”);
}
}
url.properties

map分析问题的方法是什么?我正在尝试提取第二个条目的值。key=“en”value=“${exit.logout.url.en}我不知道如何遍历这些值。
externalUrlMap.get(urlType.get(“en”)
不起作用?当检查externalUrlMap时,调试器会怎么说。placesholder是否来自属性文件?如果是,直接访问properties对象是否会更容易?我正在测试。非常感谢。有一个问题我想我可以使用@Resource而不是GenericXmlApplicationContext来注入映射。对吗?@Resource应该可以。可能您还必须添加@Qualifier(“externalUrlMap”)。资源在没有添加@Qualifier(“externalUrlMap”)的情况下工作。再次感谢您的帮助。