본문 바로가기
JAVASCRIPT & JQUERY

HashMap을 JSTL로 접근하는 방법 (HashMap<Integer, Object>)

by GoodDayDeveloper 2024. 5. 14.
반응형

 

 

일반적인 형태가 아닌 다양한 형태의 값을 표현해주려면 Map 을 사용해야 합니다. 

 

HashMap을 이용하여 JSTL로 표현하는 방법을 정리해보겠습니다.

 

 

 

HashMap을 JSTL로 접근하는 방법 (HashMap<integer, object>)

 

 

 

 

 

Controller

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int check = 0;
Map<Integer, Object> map = new HashMap<Integer, Object>();
List<String> arrSt = new ArrayList<String>();
    
for(String line : list){
    String[] arr = line.split(" ");
    
       arrSt.add(arr[arr.length-1]);
       ++check;
       map.put(check, arrSt);
    
}
 
model.addAttribute("map", map);
cs

 

 

 

 

코드의 일부만 발취했습니다.

 

리스트 형태의 데이터를 HashMap<integer, object> 을 이용하여 Map에 데이터를 담았습니다.

 

object에 담긴 데이터는 ArrayList<String> 형태입니다.

 

 

 

Object값에 배열을 넣었기에 하나의 키에 배열 값이 들어가게 됩니다.

 

이것을 model로 화면에 전송해줍니다.

 

 

 

 

 

 

JSP 

 

 

1
2
3
4
<c:forEach var="result" items="${map}" varStatus="status">
    key = ${result.key}
    value = ${result.value}
</c:forEach>
cs

 

 

 

일반적으로 HashMap에서 사용하는 배열이 아닌 일반 값으로 사용할 경우는 위와 같이 사용이 됩니다.

 

 

 

하지만 값이 배열인 경우에 사용하게 되면 배열 형태가 전부 출력되게 됩니다.

 

이것을 해결하기 위해서는 다른 방법이 필요하겠죠.

 

 

 

 

 

 

해결방법

 

 

 

1
2
3
4
5
6
7
<c:forEach var="result" items="${map}" varStatus="status">
    <tr>
        <c:forEach var="result2" items="${map}" varStatus="status2">
            <td>${result2.value[status.index]}</td>
        </c:forEach>
    </tr>
</c:forEach>
cs

 

 

 

우선은 맵을 배열에 넣어주고, 두 번째 배열을 선언합니다.

 

두 번째 배열에서는 두 번째 배열의 값을 선언한 다음,

 

첫 번째 배열의 varStatus을 이용하여 카운팅을 해주었습니다.

 

 

 

 

 

 

 

반응형

댓글