0

当我的应用程序中出现验证错误时,我会显示一个 JSP。在 Servlet 中,我ArrayList<String>在请求中设置了错误,并尝试使用以下代码在 JSP 中打印它们。我知道其中有 1 个错误,ArrayList因为我将它打印到服务器控制台,但唯一打印的是“-”。我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());
        }
    }
4

2 回答 2

0

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

于 2013-08-04T11:48:45.367 回答
-1

尝试在每次迭代时发出警报,理想情况下它应该可以工作。

于 2013-08-03T20:52:16.793 回答