테이블을 이용하여 각 행마다 번호를 매기는데, 문제는 다음과 같이 코드를 작성했더니
페이지를 로딩할 때마다 1부터 테이블이 시작되어야 하는데, 새로고침할 때마다 값이 증가했다.
<%! int no = 1; %>
<c:forEach items="${list}" var="b">
<tr>
<td>no++</td>
<td>${b.getTitle()}</td>
<td>${b.getAuthor()}</td>
<td>${b.getComment()}</td>
<td>${b.getRegdate()}</td>
<td><a class="btn btn-sm btn-warning" href="editform.jsp?id=${b.getId()}">Edit</a></td>
<td> <a class="btn btn-sm btn-danger" href="deletebook.jsp?id=${b.getId()}">Delete</a></td>
</tr>
</c:forEach>
이런 경우에는 변수를 선언하는 것이 아니라 <c:forEach> 태그의 varStatus 속성을 사용해야 의도한대로 번호를 증가시킬 수 있다.
<c:forEach items="${list}" var="b" varStatus="status">
<tr>
<td>${status.count}</td>
<td>${b.getTitle()}</td>
<td>${b.getAuthor()}</td>
<td>${b.getComment()}</td>
<td>${b.getRegdate()}</td>
<td><a class="btn btn-sm btn-warning" href="editform.jsp?id=${b.getId()}">Edit</a></td>
<td> <a class="btn btn-sm btn-danger" href="deletebook.jsp?id=${b.getId()}">Delete</a></td>
</tr>
</c:forEach>
varStatus를 이용하여 변수를 선언한 다음, 변수이름.count 를 이용하여 번호를 매겼다.
이때, count 값만 가질 수 있는 것이 아니라 다음과 같은 값들을 가질 수 있다.
- ${status.current}: 현재 for 문의 해당하는 번호
- ${status.index}: 0부터의 순서
- ${status.count}: 1부터의 순서
- ${status.first}: 첫 번째인지 여부
- ${status.last}: 마지막인지 여부
- ${status.begin}: for문의 시작 번호
- ${status.end}: for문의 끝 번호
- ${status.step}: for문의 증가값
참고한 링크: jetalog.net/20
'내가 보려고 만드는 > jsp' 카테고리의 다른 글
[jsp] alert 창을 띄운 뒤 다음 페이지로 넘어가기 (0) | 2021.01.28 |
---|---|
[입력값] 한글 깨짐 (0) | 2021.01.20 |
[form] request: checkbox 값 가져오기 (0) | 2021.01.19 |