2015-10-06 83 views
-1

我有一個像這樣的bean,它返回一個json Object(mappedData)給jsp。在jsp中迭代JSONObject對象

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

我也有我需要獲取exampleMap和顯示鍵的jsp。 所以我正在做以下。

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

如果我打印exampleMap thorugh jsp。它顯示這

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

但我想遍歷它。任何人都可以幫助請。

+0

的可能的複製[如何通過JSP一個HashMap循環?(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並不需要做地圖查找,把設置到數據條目:

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()}'找不到方法:class org.json.JSONObject.entrySet() – Abhinav

+0

如果你在數據中放入一個'Map',爲什麼當它被取出時它是'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>