我在应用程序中发生验证错误时会显示一个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());
}
}
答案 0 :(得分:0)
应该可行,但我会这样测试:
1.执行<c:out value="${errors}"/>
以确保请求中存在数据
2.将名称error
更改为其他内容,例如err1
,并将其显示以确保没有任何名称冲突。
3.检查您是否添加了<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
答案 1 :(得分:-1)
尝试提醒每次迭代,理想情况下它应该正常工作。