2013-08-03 6 views
0

응용 프로그램에 유효성 검사 오류가 발생할 때 표시 할 JSP가 있습니다. 서블릿에서 요청에 ArrayList<String> 오류를 설정하고 JSP로 다음 코드와 함께 인쇄하려고합니다. 내가 서버 콘솔에 인쇄하기 때문에 ArrayList에 1 개의 오류가 있음을 알고 있지만 인쇄되는 것은 "-"입니다. forEach 루프를 올바르게 사용하고 있습니까?JSP forEach 루프

 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

참고 : 단지'request.getRequestDispatcher()'를 호출 할 수 있습니다. 세션 및 서블릿 컨텍스트 개체를 통해 체인을 연결할 필요가 없습니다. 어쨌든해서는 안됩니다. –

답변

-1

시도 이상적으로는 작동한다, 각 반복에 경고하기 : 여기

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

는 서블릿에서의 doPost의 코드의 일부입니다.

+0

응답에 특성을 설정하는 방법이 없습니다. – user1154644

+0

응답으로 속성을 설정할 수 없습니다. 세션 등의 목적을 테스트하기 위해 다른 범위를 설정해야합니다. 작동한다면 요청을 전달하지 않고 페이지에 새 요청 객체가 있음을 의미합니다. –

0

작동해야하지만 다음과 같이 테스트하십시오.
1. 요청시 데이터가 존재하는지 확인하려면 <c:out value="${errors}"/>을 수행하십시오.
2. error을 다른 이름 (예 : err1)으로 변경하고 이름 충돌이 없는지 확인하십시오.
3. 추가 한 내용이 있는지 확인하십시오. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>