2017-11-13 11 views
1

해시 맵은 Map<String, List<String>> coverageDataMap입니다. 키를 기반으로 반환 된 목록을 반복해야합니다.JSTL의 키를 기반으로 해시 맵에서 arraylist를 반복합니다

<c:forEach items="${bean.coverageDataMap['my_key']}" 
      var="entry" varStatus="loop"> 
     <tr> 
      <td><h:outputText value="#{loop.index+1}"/></td> 
      <td><h:outputText value="#{entry}"/></td> 
     </tr> 
    </c:forEach> 

불행히도 작동하지 않습니다

것은 내가 그것을 다음과 같은 방법을하고 있어요. 나는 주변을 둘러 보았지만 아무 것도 찾을 수 없었다. 내가 무엇이 잘못되었는지 알려주세요! 감사.

답변

1

필요에 따라 일하고, 다음 코드를 사용하여 테스트를 실행

$ 

대신

# 
1

경우 사용할 보시기 바랍니다. "my_key"가 설정되어 있는지 확인하십시오.

전 C를 사용할 때 몇 가지 이상한 이유로 test.xhtml

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" 
    xmlns:h="http://xmlns.jcp.org/jsf/html" 
    xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"> 
<h:head> 
    <title>Test</title> 
</h:head> 
<h:body> 
    Key is set:<h:outputText value="${bean.coverageDataMap['my_key'] ne null}"/> 
    <br/> 
    <br/> 
    <c:forEach items="${bean.coverageDataMap['my_key']}" 
       var="entry" varStatus="loop"> 
     <tr> 
      <td><h:outputText value="#{loop.index+1}"/></td> 
      <td><h:outputText value="#{entry}"/></td> 
     </tr> 
    </c:forEach> 
</h:body> 

TestBean.java

@ManagedBean(name = "bean") 
@RequestScoped 
public class TestBean implements Serializable{ 

private static final long serialVersionUID = 1L; 

Map<String, List<String>> coverageDataMap; 

public TestBean() { 
    coverageDataMap = new HashMap<>(); 
    ArrayList<String> list = new ArrayList<>(); 
    for (int i = 1; i <= 10; i++) { 
     list.add("hello" + i); 
    } 
    coverageDataMap.put("my_key", list); 
} 

public Map<String, List<String>> getCoverageDataMap() { 
    return coverageDataMap; 
} 

public void setCoverageDataMap(Map<String, List<String>> coverageDataMap) { 
    this.coverageDataMap = coverageDataMap; 
} 
} 
+0

는, 그것은 태그와 함께 작동하지만 잘 작동하지 않습니다 밖으로 꼬리표. –

+0

[here] (https://stackoverflow.com/questions/13197016/jstl-cforeach-does-not-iterate-through-a-collection)에서 설명한 JSTL 버전 문제가있는 것으로 보입니다. –