zoukankan      html  css  js  c++  java
  • 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>,然后再返回给视图进行渲染解析。

  • 相关阅读:
    隐藏Nginx、Apache、PHP的版本信息
    PHP 安装版本选择
    Python 队列实现广度搜索算法 附上迷宫实例
    PHP 利用栈实现迷宫算法
    Python 和 PHP 实现 队列 和 栈 以及 利用栈实现符号匹配算法
    tp5 安装migration 报错 Installation failed, reverting ./composer.json to its original content.
    Redis 有序集合
    Redis 集合命令记录
    ‘This support library should not use a different version’解决方案
    build.gradle文件详解(二)
  • 原文地址:https://www.cnblogs.com/lvlang/p/10586334.html
Copyright © 2011-2022 走看看