【问题标题】:JSP forEach loopJSP forEach 循环
【发布时间】:2013-08-03 20:40:41
【问题描述】:

当我的应用程序中出现验证错误时,我正在显示一个 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());
        }
    }

【问题讨论】:

  • 仅供参考:您可以致电request.getRequestDispatcher()。您不需要链接会话和 servlet 上下文对象(而且您可能也不应该这样做)。

标签: jsp jstl


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我没有看到在响应中设置属性的方法。
    • 您不能设置属性作为响应,我的意思是设置任何其他范围以用于测试目的,例如会话等,如果它有效,则意味着您没有转发请求并且您的页面有一个新的请求对象。
    猜你喜欢
    • 2014-03-24
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 2021-05-28
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多