4. Iterate 3 : ArrayList-HashMap을 이용한 Data Collection으로 <logic:iterate> 사용하기 그리고 <logic:notEmpty>태그와<logic:iterate>의 시너지

 
-4강에서는 실전 데이터형태를 사용하고, 예외처리를 하며, 디자인도살짝꾸밈으로서 <logic:iterate>태그를 실전에 적용해보자.
 (본 강좌에 사용된 실전소스는 첨부파일을 다운로드받으세요!)

[작동과정]
1. 입력(조회)페이지가 열린다.
2. 입력하고 submit한다.
3. action에서 쿼리를 수행하여 데이터를 가져온다.(본예제에서는 데이터를 하드코딩함)
4. 가져온 데이터Collection를 리스팅한다.
 
[그림 1,2]
 
3. Action에서는 ArrayList-HashMap조합으로 데이터를 객체화하여 request에 담습니다.
 
     ArrayList al = new ArrayList();
      HashMap row = new HashMap();
      row.put("이름","홍길동");
      row.put("나이","23");
      row.put("주소","서울시 역삼동");
      al.add(row);
      
      HashMap row2 = new HashMap();
      row2.put("이름","백두산");
      row2.put("나이","30");
      row2.put("주소","대구시 수성동");
      al.add(row2);    
 
      HashMap row3 = new HashMap();
      row3.put("이름","진달래");
      row3.put("나이","28");
      row3.put("주소","부산시 남구 우암동");
      al.add(row3);        
     
     request.setAttribute("array",al);
 
4. 리스팅시에 notEmpty태그를 iterate태그와 함께 사용합니다.
<logic:notEmpty name="array" > 
   <logic:iterate name="array" type="java.util.HashMap" id="row" indexId="k">
    <tr>
     <td>
      <b><%=(k.intValue()+1)+""%></b>
     </td>
     <td>
      <%=row.get("이름")%>
     </td> 
     <td>
      <%=row.get("나이")%>
     </td>
     <td>
      <%=row.get("주소")%>
     </td>              
    </tr>
   </logic:iterate>      
  </logic:notEmpty>
  
이렇게 하면 step1에서 본페이지를 열때 array객체가 없더라도 에러가 나지않고 예외를 알리는 String으로 화면을 처리할수 있습니다.
그럼 array객체가 없을때 처리를 해보겠습니다.
  <logic:empty name="array" > 
    <tr>
     <td colspan=4 align='center'>
      조회버튼을 클릭하세요.
     </td>              
    </tr>
  </logic:empty>
이와 같이 <logic:empty>를 사용하여 초기화면을 구성할수 있습니다.
여기서 name속성은 iterate와 마찬가지로 request.getAttribute("!!!");에 오는 !!!명이 오면됩니다.
 
[그림 결과화면]
 
[요약]
1. 열-행 방식의 데이터를 ArrayList-HashMap구조와 담아서 <logic:iterate>으로
display하였다.
 
2. <logic:iterate>태그는 자체적으로 null객체일때의 처리가 없으므로, 예외처리를 위해
객체의 존재유무를 체크한다. 그역할을 하는 태그는 <logic:empty><logic:notEmpty>이며 스크립트릿에서
if-else처리에 해당되는 태그이다.
속성중 name은 attribute객체명을 얻는 키이름이다.
Posted by 커널제로

본 블로그는 페이스북 댓글을 지원합니다.

,