【问题标题】:Exception in iterating json value using jstl core [duplicate]使用jstl核心迭代json值时出现异常[重复]
【发布时间】:2014-10-30 07:08:30
【问题描述】:

我在 spring 控制器类中生成 json 对象,如下所示

My Controller Class:
            Map<String,Object> model=new HashMap<String,Object>();
             model.put("project", project);
             model.put("roles", userService.dispRoles());
            for(int i=0;i<phaseList.size();i++){

                        TblProjectPhase projectPhase=phaseList.get(i);
                         try {
                            json=new JSONObject();
                            json.put("phasename", projectPhase.getPhaseName());
                            json.put("remain", getRemainingResource(projectPhase));
                                json.put("users",sessionfactory.getCurrentSession().createCriteria(TblProjectResource.class)
                    .add(Restrictions.eq("tblProjectPhase",phase))
                    .list());
                            ja.put(json);
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    JSONObject res=new JSONObject();
                    res.put("result", ja);
             model.put("userList",res );

我的 json 对象如下所示

{"result":[
{"phasename":"BVFD Phase1",
"remain":0,
"users":
["TblProjectResource@1cb5e384",
"TblProjectResource@1cb5e385"]
}
]}

我试图在我的 jstl 核心中迭代它,如下所示

<c:choose>
                             <c:when test="${not empty model.userList }">
                             <c:forEach var="user" items="${model.userList}">
                             <c:forEach var="child" items="${user.result}">
                             <c:out value="${child.phasename}"/>
                              <c:forEach items="child.users" var="u">
                               <c:out value="u.name"/>
                             </c:forEach>
                             </c:forEach></c:when>
                             <c:otherwise>No Users Availble In this Phase</c:otherwise></c:choose>

但是我的代码在浏览器中抛出异常。异常是

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;

如何使用 jstl 在我的 json 中迭代 coorect 方式? 任何帮助将不胜感激!!!

【问题讨论】:

  • JSTL 和 JSP EL 不适用于 JSON。它们使用 Java bean 和集合。
  • 感谢您的解释

标签: java json spring jstl


【解决方案1】:

&lt;c:forEach&gt; 标签只能迭代CollectionMapIteratorEnumerationString&lt;c:forEach&gt; 无法迭代其他任何内容。

由于请求中的 userListJSONObject 类型,因此您无法使用 jstl 对其进行迭代。您可以尝试使用javascript 进行迭代。

Addional Info and Work arounds这里

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2017-08-12
    • 1970-01-01
    • 2012-05-21
    • 2021-10-04
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多