• javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in xxx


    今天使用SringMVC + Mybatis + JSP 搭建一个小 demo 的时候,报了如下错误
    报错信息如下

    type Exception report
    
    message An exception occurred processing JSP page /WEB-INF/views/user_list.jsp at line 28
    
    description The server encountered an internal error that prevented it from fulfilling this request.
    
    exception
    
    org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/user_list.jsp at line 28
    
    25:         <th>鍒犻櫎</th>
    26:     </tr>
    27:     </thead>
    28:     <c:forEach items="${user}" var="user">
    29:         <tr>
    30:             <th>${user.id}</th>
    31:             <th>${user.name}</th>
    
    
    Stacktrace:
        org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:574)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:461)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:170)
        org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314)
        org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325)
        org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069)
        org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008)
        org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
        org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    root cause
    
    javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;
        org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:909)
        org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:838)
        org.apache.jsp.WEB_002dINF.views.user_005flist_jsp._jspService(user_005flist_jsp.java:158)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:170)
        org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314)
        org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325)
        org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069)
        org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008)
        org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925)
        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974)
        org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

    这是因为我在 JSP 中使用了 forEach 遍历 user :

    <c:forEach items="${user}" var="user">
            <tr>
                <th>${user.id}</th>
                <th>${user.name}</th>
                <th>${user.address}</th>
            </tr>
        </c:forEach>

    但是我控制器返回的是单个对象,而针对单个对象无法使用 foreach 迭代,故报错如上。
    解决办法是将应答的对象封装到一个 list 中:List<User>,然后再返回给视图进行渲染解析。

  • 相关阅读:
    【洛谷P1119】灾后重建
    【洛谷P1462】通往奥格瑞玛的道路
    【洛谷P1991】无线通讯网
    poj 2892(二分+树状数组)
    hdu 1541(树状数组)
    hdu 5059(模拟)
    hdu 5056(尺取法思路题)
    poj 2100(尺取法)
    hdu 2739(尺取法)
    poj 3320(尺取法)
  • 原文地址:https://www.cnblogs.com/lvlang/p/10586334.html
Copyright © 2020-2023  润新知