이미 shopList를 forEach로 돌리고 있는 상황에서, 해당 매장의 찜된 갯수를 따로 받아와서 같이 출력하는 상황이었다.
위에처럼 해당 매장의 찜한 숫자만 가져오고싶었다.
일단 컨트롤러에서 출력한 리스트에서 필요한 값만 받아와서 해당 매장을 찜한 카운트를 세러 보냈다.
//controller.java
List<HairSalon> salonList = shopService.selectHarList(STARTPAGE, 5); //미용실 목록 받아옴.
String har_num = null;
List<String> list = new ArrayList<String>(); //각 매장의 찜 숫자를 담을 list 생성
for(int i =0; i<salonList.size(); i++) {
har_num = salonList.get(i).getHarNum(); //list형태의 salonList에서 각각의 미용실번호가져옴
String count = likeService.countSalon(har_num); //db까지 보내서 count값을 받아옴
System.out.println("************count*****"+count);
list.add(count); //순서대로 list에 매장찜 숫자를 담음
mv.addObject("count", list); //model에 실어 jsp로 보냄
}
그리고 jsp에서 출력을 시도했다!!! 첫 시도방법은 이렇게 했다..^^ 바보같았음.
생각해보면 이중 for문으로 했던것이다~~~
<c:forEach items="${shopList}" var="item" varStatus="status" >
<ul>
.....
<c:forEach items="${count }" var="count">
<a href="#">찜하기<small>${count }</small></a>
</c:forEach>
.....
</ul>
</c:forEach>
그래서 그럼 한 for문 돌때 같이 돌게 하는 방법은 뭐가있을까했는데 넘나 간단했다!!!
바로 varStatus를 이용하면 됐던것!
varStatus는 현재의 위치값을 알려주는 아주 친절한 아이다!
index를 쓰면 우리가 아는 고고 index (0부터 시작!)
count도 우리가 아는 고고 count (1부터 시작!)
그래서 이렇게 바꿔줬다!
<c:forEach items="${shopList}" var="item" varStatus="status" >
<ul>
...
<a href="#">찜하기 <small> ${count[status.index]}</small></a>
...
</ul>
</c:forEach>
그러면 저 shopList가 돌때 count도 같이 하나씩하나씩 값을 넣게 하는 것이었다~~~~
JSTL 거의 items랑 var 만 이용해서 varStatus 존재를 잊고있었다...^^...... 이제 까먹지 않겠어!!
'SPRING' 카테고리의 다른 글
일정 시간이 되면 DB를 업데이트 시켜주는 스프링 스케쥴러 (0) | 2021.07.08 |
---|---|
OAUTH란 (0) | 2021.06.17 |
No converter found for return value of type 에러 발생 (0) | 2021.06.15 |
어노테이션 연결 (0) | 2021.06.15 |
mapper.xml 생성하기 (0) | 2021.06.10 |