【问题标题】:how to use c:forEach with arrayList?如何将 c:forEach 与 arrayList 一起使用?
【发布时间】:2021-03-30 08:49:21
【问题描述】:

selectProcess.jsp

<p>out.print("list:"+${departmentList }); </p>

<c:forEach items="${departmentList } " var="department ">
    <p>${department.getCode() }   ${department.getDep_name() }</p>
</c:forEach>

输出

forEach 没有打印

out.print("list:"+[department.DepartmentVO@722e831, department.DepartmentVO@408834bf, department.DepartmentVO@418561dd]);

Controller.java

    // search DepartmentList
    @RequestMapping("/getDepartmentList.do")
    public ModelAndView getDepartmentList(DepartmentVO vo, DepartmentDAO departmentDAO, ModelAndView mav) {
        mav.addObject("departmentList", departmentDAO.getDepartmentList(vo)); // Model set
        mav.setViewName("selectProcess"); // View set
        return mav;
    }

departmentDAO.java

    // search departmentList
    public List<DepartmentVO> getDepartmentList(DepartmentVO vo) {
        System.out.println("===> JDBC to getDepartmentList() ");
        List<DepartmentVO> departmentList = new ArrayList<DepartmentVO>();
        try {
            conn = JDBCUtil.getConnection();
            stmt = conn.prepareStatement(DEPARTMENT_LIST);  // => DEPARTMENT_LIST = "select * from department "
            rs = stmt.executeQuery();
            while (rs.next()) {
                DepartmentVO department = new DepartmentVO();
                department.setCode(rs.getInt("CODE"));
                department.setDep_name(rs.getString("DEP_NAME"));
                departmentList.add(department);
                System.out.println("=====>>>>>>{"+department.getCode() +"}");
                System.out.println("=====>>>>>>{"+department.getDep_name() +"}");
            }
            System.out.println("===> JDBC to getDepartmentList() done");
            for(DepartmentVO i : departmentList) { 
                System.out.println(i.getCode());
                System.out.println(i.getDep_name());
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.close(rs, stmt, conn);
        }
        return departmentList;
    }

输出

===> JDBC to getDepartmentList()
=====>>>>>>{1}
=====>>>>>>{1_name}
=====>>>>>>{2}
=====>>>>>>{2_name}
=====>>>>>>{3}
=====>>>>>>{3_name}
===> JDBC to getDepartmentList() done
1
1_name
2
2_name
3
3_name

departmentVO.java

//VO(Value Object)
public class DepartmentVO {
    private int code;
    private String dep_name;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getDep_name() {
        return dep_name;
    }

    public void setDep_name(String dep_name) {
        this.dep_name = dep_name;
    }
}

在

    public DepartmentVO getDepartment(DepartmentVO vo) {
        System.out.println("===> JDBC To getDepartment() ");
        DepartmentVO department = null;
        try {
            conn = JDBCUtil.getConnection();
            stmt = conn.prepareStatement(DEPARTMENT_LIST);  // => DEPARTMENT_LIST = "select * from department "
            
            rs = stmt.executeQuery();
            if (rs.next()) {
                department = new DepartmentVO();
                department.setCode(rs.getInt("CODE"));
                department.setDep_name(rs.getString("DEP_NAME"));
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.close(rs, stmt, conn);
        }
        return department;
    }


in controller

    @RequestMapping("/getDepartment.do")
    public ModelAndView getDepartment(DepartmentVO vo, DepartmentDAO departmentDAO, ModelAndView mav) {
        mav.addObject("department", departmentDAO.getDepartment(vo));
        mav.setViewName("selectProcess");
        
        return mav;
    }



in selectProcess.jsp
                        <c:forEach items="${department }" var="department ">
                                <p>${department.Code }   ${department.Dep_name }</p>
                        </c:forEach>


output  ==> it is print one . i know it 
    1 1_name

我不知道如何用 c:forEach 打印 arrayList。

不是arrayList,只是打印department.code -> 好打印

但是 arrayList、department.getCode()、department.code -> 什么都没有

我该怎么办??

【问题讨论】:

  • 去掉&lt;c:forEach&gt;的items和var属性中的空格有帮助吗?另外,您的 JSP 是否在顶部有 &lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt; 行?如果您查看页面的 HTML 源代码,您是否看到多个 &lt;p&gt; 元素,每个元素对应 ArrayList 中的每个项目?
  • @LukeWoodward org.apache.jasper.JasperException: row [24][/WEB-INF/views/selectProcess.jsp] 21: &lt;p&gt;out.print("list:"+${departmentList}); &lt;/p&gt; 22: 23: &lt;c:forEach items="${departmentList} " var="department"&gt; 24: &lt;p&gt;${department.getCode()} ${department.getDep_name()}&lt;/p&gt; 25: &lt;/c:forEach&gt; 26:
  • @LukeWoodward 如果您查看页面的 HTML 源代码,您是否看到多个

    元素,ArrayList 中的每个项目一个? -> 没有..

  • 请编辑您的问题以包含您在第一条评论中发布的错误消息的完整详细信息。除了异常的类型和位置之外,我还希望看到一条消息解释出了什么问题。
  • @LukeWoodward 天哪!!在顶部键入&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt; 并删除&lt;c:forEach&gt; 的项目和var 属性中的空格并将${department.getCode()} 更改为${department.code} 后它正在工作,非常感谢!!!!!!!!! ♡

标签: java jsp model-view-controller foreach modelandview


【解决方案1】:

在顶部键入&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt; 并删除&lt;c:forEach&gt; 的项目和var 属性中的空格并将${department.getCode()} 更改为${department.code} 后,它就可以工作了

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    相关资源
    最近更新 更多