❗ 문제
네이버 블로그 RSS를 JSTL XML Tag를 가지고 읽어오는 부분 구현 중에 날짜 포맷팅하는 과정에서 발목이 잡혔다.😧
rss에서는 게시글 작성일자의 형식을 "Thu, 15 Jun 2023 14:08:20 +0900 "이런 식으로 제공하는데 <fmt:parseDate>로 Date형으로 변환 후 2023-06-15 포맷팅을 해주려 하니 ParseException이 발생했다. 이 외에도 <c:set> 태그를 잘못 사용해서 데이터가 제대로 들어가지 않는 문제 등등.. 마냥 쓰던 스타일대로만 쓰다 보니 기본을 잊어버렸던 것 같다.
💡 해결
첫 번째로 <c:set> 태그에서 value가 제대로 들어가지 않았던 것
// 문제의 코드
<c:set var="data" value="<x:out select='data'/>" />
// 수정 코드
<c:set var="data" ><x:out select="data"/></c:set>
value 내에선 EL태그는 적용하지만 JSTL은 적용되지 않는다. 하지만 value에서 저장하는 것 외에도 이렇게도 쓸 수 있다. <x:out>으로 출력된 데이터는 <c:set> 태그에서 저장된다.
두 번째로 <fmt:parseDate> parseException !
// 문제의 코드
<fmt:parseDate value="${date}" pattern="EEE, dd MMM yyyy" var="parseDate" />
<fmt:formatDate pattern="yyyy-MM-dd" value="${parseDate}" />
// 수정 코드
<fmt:parseDate value="${date}" pattern="EEE, dd MMM yyyy" var="parseDate" parseLocale="en_US" />
<fmt:formatDate pattern="yyyy-MM-dd" value="${parseDate}" />
문제의 코드와 수정 코드의 차이점은 parseLocale="en_US" 이다.
변환시킬 날짜 데이터는 "Thu, 15 Jun 2023 14:08:20 +0900"으로, 월과 요일의 단위가 영어로 제공됐다.
영어로 된 월과 요일 단위를 인식하기 위해서는 value에 들어간 데이터의 인코딩이 "en_US"라고 <fmt:parseDate>에게 친절히 알려줘야 했다. 그럴 때 사용되는 속성은 parseLocale이고 추가해주고 나니 DateFormat까지도 잘 넘어가는 것을 확인할 수 있었다.
➡️ 참고
JSTL Core Tag c:if Example
DetailsWritten by Nam Ha Minh Last Updated on 31 August 2019 | Print Email This post helps you understand and use the tag in the JSTL core tag library.You know, is a conditional tag which executes the body of the tag is given condition evaluates
www.codejava.net
JSTL: 서버단 코딩 없이 네이버 블로그 RSS로 포스트 목록 가져오기
문제 모 브랜드를 사이트를 개발하여 그 회사에서 운영하는 네이버 블로그를 읽어올 일이 생겼다. JSTL로 아주 간단하게 RSS를 읽어서 목록을 가져올 수 있었다. 순서 JSP 상단에 JSTL XML 태그라이브
server0.tistory.com