- 게시판을 보면 글을 특정 개수 단위로 나눠놨는데 이것이 Pager인 것이다.
<c:set var="page" value="${(param.p == null)?1:param.p }"/>
<c:set var="startNum" value="${page-(page-1)%5 }"/>
<ul class="-list- center">
<c:forEach var="i" begin="0" end="4">
<li><a class="-text- orange bold" href="?p=${i+startNum }&t=&q=">${i+startNum }</a></li>
</c:forEach>
</ul>
- 위의 코드를 보면 <c:set>을 통해 page와 startNum이라는 변수를 지정해주었다.
- 여기서 page 변수는 넘어오는 p값이 null이라면 1이고 null이 아니라면 해당 p값을 page로 지정하였다.
- startNum은 1 2 3 4 5 처럼 게시판 아래에 페이지 번호를 작성하기 위한 변수인데 이는 page-(page-1)%5 연산을 하면 5개의 숫자가 나온다.
- 아래에서는 <c:forEach>문을 사용하여 연산된 startNum에 i를 더해줌으로써 page 번호를 출력하게 하였다.
- 이전페이지와 다음페이지로 갈 수 있는 버튼을 생성해야한다.
- 하지만 이전페이지 또는 다음페이지가 없을경우에는 오류문구를 띄어야한다.
여기서 사용할 수 있는 JSTL이 <c:if test="">이다.
<c:set var="page" value="${(param.p == null)?1:param.p }"/>
<c:set var="startNum" value="${page-(page-1)%5 }"/>
<c:set var="LastNum" value="23"/>
<div>
<c:if test="${page-1>0 }">
<a href="?p=${page-1 }" class="btn btn-next" >이전</a>
</c:if>
<c:if test="${page-1<=0 }">
<span class="btn btn-prev" onclick="alert('이전 페이지가 없습니다.');">이전</span>
</c:if>
</div>
<ul class="-list- center">
<c:forEach var="i" begin="0" end="4">
<li><a class="-text- orange bold" href="?p=${i+startNum }&t=&q=">${i+startNum }</a></li>
</c:forEach>
</ul>
<div>
<c:if test="${startNum+5<LastNum}">
<a href="?p=${startNum+5 }" class="btn btn-next" >다음</a>
</c:if>
<c:if test="${startNum+5>=LastNum }">
<span class="btn btn-next" onclick="alert('다음 페이지가 없습니다.');">다음</span>
</c:if>
</div>
- 위의 예제에서는 아직 DB에 있는 row의 개수를 구하기 전이라서 이 때 마지막 페이지의 수를 임의의 수인 23으로 설정하였다.
JSTL:forTokens로 첨부파일 목록 출력하기
- forTokens는 문자열을 특정 문자 기준으로 분리할 수 있다.
- 예를 들어 DB에 파일 목록이 있는데 이는 ','로 구분되서 저장되어있다.
- 이를 각각 하이퍼링크를 달아줘야하는데 forTokens를 사용하면 가능하다.
<th>첨부파일</th>
<td colspan="3" style="text-align:Left;text-indent:10px;">
<c:forTokens var="fileName" items="${n.files }" delims="," varStatus="st">
<a href="${fileName }">${fileName }</a>
<c:if test="${! st.last }">
/
</c:if>
</c:forTokens>
</td>
- <c:forTokens>에서 items는 사용할 자료이고 delims는 구분할 문자이다.
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
- formatting을 하기위해서는 위의 코드를 작성한다.
- 아래는 날짜를 formatting을 하는 코드이다.
<td class="text-align-left text-indent" colspan="3">
<fmt:formatDate pattern="yyyy-MM-dd hh:mm:ss" value="${n.regdate }"/>
</td>
- 숫자를 123,456,789 와 같이 3자리씩 쉼표로 띄어서 보고싶다면 아래와 같이 하면된다.
<fmt:formatNumber value="${n.hit}"/>
- 여러개의 옵션이 있다. type="number", type="percent" 등등...
- 구글에 검색해서 사용하자