2015-10-06 4 views
-1

У меня есть компонент, похожий на тот, который возвращает json Object (mappedData) в jsp.Итерация над JSONObject в jsp

final Map<String, TreeMap<String, List<String>>> exampleMap = wFAServiceProxy .fetch();   
mappedData.put("exampleMap ", exampleMap); 
retrun mappedData; 

У меня также есть JSP, где я должен принести exampleMap и отображать ключи. , поэтому я делаю следующее.

<c:forEach items='${serviceDetailFormData.get("exampleMap ")}' var="category"> 
     <a:dropdownOption value="${category.key}">${category.key} </a:dropdownOption> 
</c:forEach> 

, но я столкнулся с этой проблемой. Я много искал, но не смог найти решение.

Caused by: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt; 
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:308) 
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:272) 
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:189) 
at javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:287) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspx_meth_c_005fforEach_005f1(serviceDetail_jsp.java:3152) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspx_meth_a_005fdropdown_005f1(serviceDetail_jsp.java:3094) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspx_meth_a_005fgridColumn_005f32(serviceDetail_jsp.java:3046) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspx_meth_a_005fgridRow_005f9(serviceDetail_jsp.java:2926) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspx_meth_a_005fform_005f0(serviceDetail_jsp.java:662) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspx_meth_a_005fgridColumn_005f1(serviceDetail_jsp.java:488) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspx_meth_c_005fif_005f0(serviceDetail_jsp.java:435) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspx_meth_a_005fgridRow_005f0(serviceDetail_jsp.java:357) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspx_meth_a_005fbody_005f0(serviceDetail_jsp.java:238) 
at org.apache.jsp.WEB_002dINF.views.serviceDetail_jsp._jspService(serviceDetail_jsp.java:188) 

Если я напечатаю примерMap thorugh jsp. Он показывает это

{"cws":{"flipkart":["amazon","coral","Download Problem","upload","operation","Security","Upload Problem"]},"central Mall":{"Tools":["Flipkart- Document Management System"]}} 

, но я хочу перебрать его. кто может помочь.

+0

Возможный дубликат [Как петлю через HashMap в JSP?] (Http://stackoverflow.com/questions/1835683/how-to-loop-through-a-hashmap -in-jsp) – kryger

ответ

0

Как и в Java, вы должны вызвать entrySet() итерировать записи карты:

<c:forEach items='${serviceDetailFormData.get("exampleMap ").entrySet()}' var="category"> 
     <a:dropdownOption value="${category.key}">${category.key} </a:dropdownOption> 
</c:forEach> 

В качестве альтернативы, если JSP не нужно делать карты Lookups, поставить запись в набор данных:

mappedData.put("exampleMap ", exampleMap.entrySet()); 
+0

Здравствуйте @Andreas, я все еще получаю ту же проблему. – Abhinav

+0

Это новая ошибка. Причина: org.apache.jasper.el.JspELException: /WEB-INF/views/serviceDetail.jsp(165,37) '$ {serviceDetailFormData.get ("exampleMap") .entrySet()}' Метод не найден: класс org.json.JSONObject.entrySet() – Abhinav

+0

Если вы помещаете «карту» в данные, почему это «JSONObject», когда вы отбираете его? – Andreas

0
<c:forEach items='${serviceDetailFormData.get()}' var="category"> 
     <a:dropdownOption value="${category.key}">${category.key} </a:dropdownOption> 
</c:forEach> 

вместо

<c:forEach items='${serviceDetailFormData.get("exampleMap ")}' var="category"> 
     <a:dropdownOption value="${category.key}">${category.key} </a:dropdownOption> 
</c:forEach> 
0

Следующая решить мою проблему

<c:forEach items='${serviceDetailFormData..get("exampleMap ").keys()}' var="category"> 
    <a:dropdownOption value="${category.key}">${category.key} </a:dropdownOption> 
</c:forEach> 
Смежные вопросы