JSP forEach循环

时间:2013-08-03 20:40:41

标签: jsp jstl

我在应用程序中发生验证错误时会显示一个JSP。在Servlet中,我在请求中设置了ArrayList<String>个错误,并尝试使用以下代码在JSP中打印它们。我知道ArrayList中有1个错误,因为我将其打印到服务器控制台,但唯一打印的是“ - ”。我是否正确使用forEach循环?

<c:forEach var="error" items="${errors}">
    <h1>-${error}</h1>
    <br>
</c:forEach>

以下是Servlet中doPost代码的一部分:

        ArrayList<String> errors = dataValidator.getErrors();
    if (errors.isEmpty()) {
        String cost = dataValidator.getCost();
        request.setAttribute("cost", cost);
        RequestDispatcher resultsDispatcher = request.getSession().getServletContext().getRequestDispatcher("/results.jsp");
        try {
            resultsDispatcher.forward(request, response);
        } catch (ServletException se) {
            System.out.println("Servlet Exception: " + se.toString());
        } catch (IOException ioe) {
            System.out.println("IO Exception: " + ioe.toString());
        }
    } else {
        request.setAttribute("errors", errors);
        RequestDispatcher errorDispatcher = request.getSession().getServletContext().getRequestDispatcher("/errors.jsp");
        try {
            errorDispatcher.forward(request, response);
        } catch (ServletException se) {
            System.out.println("Servlet Exception: " + se.toString());
        } catch (IOException ioe) {
            System.out.println("IO Exception: " + ioe.toString());
        }
    }

2 个答案:

答案 0 :(得分:0)

应该可行,但我会这样测试:
 1.执行<c:out value="${errors}"/>以确保请求中存在数据  2.将名称error更改为其他内容,例如err1,并将其显示以确保没有任何名称冲突。
 3.检查您是否添加了<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

答案 1 :(得分:-1)

尝试提醒每次迭代,理想情况下它应该正常工作。