프로젝트 진행중 만료 여부를 나타내야 했는데 코어로직이 아닌 jsp에서 해결하고 싶었다.
코어로직인 자바쪽에서 현재날짜와 만료날짜를 비교해서 만료여부를 알려주는 작업을 진행할 수도 있겠지만, jstl에서 현재날짜를 불러와 비교를 할 수 없는지 궁금했다.
그래서 여러 작업을 진행해본 결과를 리뷰한다.
먼저 필요한건 jsp의 taglib 두개이다.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
core는 분기를 하기위해 choose, when, otherwise를 활용해야하고,
fmt는 날짜포맷을 동일하게 해주어 비교해주어야 하기 때문에 필수로 필요하다.
다음은 매우 중요했고 오래걸린 현재날짜를 불러오는 것이다....
처음에는 fmt안에서 ${now}를 하면 현재날짜가 나온다는 여러 블로그 글을 참고했었다.
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd" var="now" />
결과는 값을 불러올 수 없었다.
test는 <c:out/> 을 통해 진행했다.
다음은 now를 fmt에서 찾을 수 없으니까 now를 지정해줄 수 있는게 필요했다.
검색을 해보니 jsp에서 자바 유틸을 불러오는 것을 발견할 수 있었다.
방법은 매우간단하게도 상단에 다음을 붙이면 된다.
<jsp:useBean id="now" class="java.util.Date" />
now는 현재 날짜가 되게 된다.
다음이 중요한데 이를 하지 않으면 view에서 오류가 발생했다.
<jsp:useBean id="now" class="java.util.Date" />
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd" var="now" />
페이지 최상단에 두개를 같이 두어야한다. 중간에 fmt를 하면 반복문을 써서인지
오류가 났었다.
오류에 대한 이유를 알고싶다... ㅠㅠ