2014-07-10 3 views
0

두 번째 항목의 값을 얻고 isues를 얻으려고합니다. 귀하의 도움에 미리 감사드립니다. 이것은 내가 형식 불일치를 얻을 오류입니다Java에서 중첩 된 map.entries 삽입하는 방법?

<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); 
      } 
    } 

:

여기 내 코드입니다 고마워 >> 반복자에> 반복자에서 변환 할 수 없습니다.

+0

지도의 문제점을 분석하려면? –

+0

두 번째 항목의 값을 추출하려고합니다. key = "en"value = "$ {exit.logout.url.en} 그리고 값을 반복하는 방법을 알아낼 수 없습니다. – Kordestan

+0

externalUrlMap.get (urlType) .get ("en ")'이 작동하지 않습니다. ? –

답변

0

테스트하려면 다음과 같은 최소한의 설정을 수행했습니다. 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> 
+0

나는 이것을 시험하고있다. 고마워. 하나의 질문은 GenericXmlApplicationContext 대신 @Resource를 사용하여지도를 삽입 할 수 있다고 생각합니다. 권리? – Kordestan

+0

그것은 일했다. .. 굉장해. 도와 주셔서 대단히 감사합니다. – Kordestan

+0

@Resource가 작동해야합니다. @Qualifier ("externalUrlMap")도 추가해야 할 수도 있습니다. –

관련 문제