我发送一个包含model的自定义对象列表,以及一个JSP作为视图。我的自定义对象有一个名为properties
的属性,它是JSONObject
。此属性的值为
{"services":[{"name":"abcd"},{"name":"efgh"}]}
现在我想迭代JSONArray [{"name":"abcd"},{"name":"efgh"}]
。这是我正在做的循环
<c:if test="${not empty customObject.services}">
<c:forEach items="${customObject.services.getJSONArray(\"services\")}" var="Service" varStatus="rowCounterCh">
<li>${Service.name}</li>
</c:forEach>
</c:if>
但是这不能遍历JSONArray。我得到了以下错误。
javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
那么,我该怎么做才能遍历JSONArray?请帮忙
答案 0 :(得分:6)
我有类似的东西
<c:forEach begin="0" end="${jsonArray.length() -1}" var="index">
${jsonArray.getJSONObject(index).getString("name")}
</c:forEach>
将${jsonArray.length() -1}
替换为您的jsonArray
。在这种情况下,它就是这样的
${customObject.services.getJSONArray(\"services\").length()}
答案 1 :(得分:2)
对于每个标记,都需要一个基本界面。 JSONArray既不是 java.util.Collection 也不是 java.util.Iterable 。因此,对于每个标记,实现都不能迭代您传递给items属性的集合。
要解决此问题,您可以: