CommunityController.java
************************************************************************
[커뮤니티]-[수강후기] 페이지 리스트
************************************************************************
@RequestMapping("/community/review")
public ModelAndView getReviewList(
HttpServletRequest req, HttpServletResponse res,
@RequestParam(value="currentPage", defaultValue="1") int currentPage,
@RequestParam(value="listSize", defaultValue="9") int listSize
) throws Exception {
List<ReviewVO> reviewList = reviewService.selectReviewAll((currentPage - 1) * listSize, listSize);
ArrayList<String> reviewNameList = new ArrayList<>();
String reviewName = "";
for (ReviewVO review : reviewList) {
String regUserName = review.getRegUserName();
String nameMask = regUserName.substring(1, regUserName.length());
String masking = "";
for(int i=0; i< nameMask.length(); i++) {
masking += "○";
reviewName = regUserName.replace(nameMask, masking);
}
reviewNameList.add(reviewName);
}
int count = reviewService.selectReviewTotalCount();
//페이징
Pager page = new Pager(currentPage, count, listSize, 10);
ModelAndView mv = new ModelAndView("/community/review");
mv.addObject("page", page);
mv.addObject("totalCount", count);
mv.addObject("reviewList", reviewList);
mv.addObject("reviewNameList", reviewNameList);
return mv;
}
review.jsp
<div class="review">
<c:forEach var="r" items="${ reviewList }" varStatus="status">
<div class="reviewGroup hoverEfct" onclick="reviewOpen('${ r.title }', '${ r.courseName }', '${ reviewNameList[status.index] }', '${ r.contents }');">
<input type="hidden" name="seq" value=${ r.seq } />
<div class="tit" id="title">${ r.title }</div>
<div class="con" id="contents">${ r.contents }</div>
<div class="info">
<div class="process" id="courseName">${ r.courseName }</div>
<div class="name" id="regUserName">${ reviewNameList[status.index] }</div>
</div>
</div>
</c:forEach>
</div><!-- review:end -->
컨트롤러에서 보낸 두 배열 reviewList, reviewNameList 를 forEach문으로 화면단에 뿌릴 때 varStatus="status"를 이용한다. 이때 forEach문에 items에 기재하지 않은 list는 ${ reviewNameList[status.index] } 와 같이 [status.index] 를 붙여준다.
cf) 상태용 변수 status 사용법
<c:foreach var="for문 내부에서 사용할 변수" items="${리스트가 받아올 배열이름}"
varStatus="상태용 변수">
// 반복해서 표시할 내용 혹은 반복할 구문
</c:foreach>
${status.current} 현재 for문의 해당하는 번호
${status.index} 0부터의 순서
${status.count} 1부터의 순서
${status.first} 첫 번째인지 여부
${status.last} 마지막인지 여부
${status.begin} for문의 시작 번호
${status.end} for문의 끝 번호
${status.step} for문의 증가값