2016-09-16 2 views
0

JSP 테이블에 HashMap의 내용을 채우려하지만 JSP (firstName 속성)에서이를 참조하는 첫 번째 시도에서 PropertyNotFoundExceptions을 계속 가져옵니다. 나는 var [ 'key']와 var.value.key를 사용하여 EL에서 참조하고 PropertyNotFoundException을 얻을 때마다 시도했다.JSP 테이블에 Hashmap 데이터를 채울 때 PropertyNotFoundException을 계속 가져옵니다.

는 JSP :

<c:forEach var="orders" items="${ orderList }"> 
      <tr> 
       <td class="name"> 
        <a href="">${ orders.firstName }</a> 
       </td> 
       <td>${ orders.date }</td> 
       <td>${ orders.product }</td> 
       <td>${ orders.comments }</td> 
      </tr> 
     </c:forEach> 

속성을 설정하는 서블릿 다음 FormManager 클래스에서

FormManager fm = new FormManager(); 
HashMap hm = fm.getOrder(); 
request.setAttribute("orderList", hm); 

을 : 여기에 내가 사용하고 코드의

public HashMap getOrder() { 
     dbm = new DatabaseManager(); 
     Statement stmt = null; 
     String sql = "SELECT * FROM orders"; 
     HashMap<String, String> itemMap = new HashMap<String, String>(); 
     String[] keys = { "firstName", "lastName", "phone", "email" , "date", "product", "comments", "id" }; 

     dbm.setUrl("jdbc:mysql://localhost:3306/pattycakes"); 
     dbm.connect(); 
     try { 
      stmt = dbm.getConn().createStatement(); 
      ResultSet rs = stmt.executeQuery(sql); 
      ResultSetMetaData rsmd = rs.getMetaData(); 

      int columns = rsmd.getColumnCount(); 
      for (int i = 0; i < columns; i++) { 
       rs.beforeFirst(); 
       rs.next(); 
       itemMap.put(keys[i], rs.getString(i + 1)); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } finally { 
      dbm.disconnect(stmt, dbm.getConn()); 
     } 
     return itemMap; 
    } 

이 할 수있다 지금까지 가족 구성원을 위해 이것을 작성하는 과정에 있기 때문에 지금까지이 코드에 대한 몇 가지 문제가 있습니다. 내가 관심을 갖는 것은 예외를 지나쳐 나가는 방법 뿐이다. 감사!

답변

0

는 JSP는 orderList 속성이지도의 Collection 될 것이라고 가정하는 것 같다, 그러나 당신이 제시 한 다른 코드는이 하나의 순서를 나타내는 String 키와 String 값으로 하나의 맵으로 설정되는 보여줍니다. orderListMap이므로 JSTL foreach을 통해 반복하면 Map.Entry의 인스턴스가 생성되며지도의 각 항목에 하나씩 표시됩니다. 해당 항목에는 실제로 firstName 속성이나 추출하려고하는 다른 속성이 없습니다.

부적절한 이름의 orderList 속성은 실제로 한 주문에만 데이터를 제공하기 때문에 그 이상의 반복은 의미가 없습니다. 나는 당신이 그 속성에 대해 잘못된 값을 설정하고 있다고 생각할 것이다. 그러나 정말로 원하는 것이면 JSP 코드와 함께 다음 명령을 사용하여 하나의 순서를 표시 할 수있다 :

<!-- no foreach --> 
<tr> 
    <td class="name"> 
     <a href="">${ orderList["firstName"] }</a> 
    </td> 
    <td>${ orderList["date"] }</td> 
    <td>${ orderList["product"] }</td> 
    <td>${ orderList["comments"] }</td> 
</tr> 
+0

감사합니다. 내 코드에 불일치가 있다는 것을 알았지 만 그것을 보지 못했습니다. 이것은지도 모음과 주문 테이블을 의미합니다. 내 부분에 큰 실수. –

관련 문제