emovie
우당탕 개발 💭
emovie
전체 방문자
오늘
어제
  • ALL (42)
    • Java (6)
    • DB,SQL (3)
    • Network (1)
    • DevOps (1)
      • Docker (1)
    • Git (2)
    • Algorithm (8)
    • Design Pattern (2)
    • Data Structure (2)
    • Software Engineering (1)
    • Issue (4)
    • Book (3)
    • TIL (3)
    • Work Experience (2)
    • Conference (1)
    • 회고 (1)
    • 모음 (2)

블로그 메뉴

    공지사항

    인기 글

    태그

    • 자바
    • server path
    • DesignPattern
    • 프로그래머의뇌
    • context root
    • 책리뷰
    • 시스템테스트
    • Git
    • fmt:parseDate
    • It
    • Issue
    • parseLocale
    • 책
    • ApacheAirflow
    • TIL
    • ApacheAirflow기반의데이터파이프라인
    • 제이펍
    • 제이펍전문서리뷰어2기
    • axios POST 403 Forbidden Error
    • java
    • MSSQL
    • IT서적
    • Jpub
    • git history 정리
    • AWS로시작하는인프라구축의정석
    • IT서적리뷰
    • 자료구조
    • 회고
    • 위클리챌린지
    • 프로그래머스

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    emovie

    우당탕 개발 💭

    [JSTL] "EEE, dd MMM yyyy" ParseException
    Issue

    [JSTL] "EEE, dd MMM yyyy" ParseException

    2023. 7. 3. 14:04

    ❗ 문제

    네이버 블로그 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

     

    저작자표시 (새창열림)
      'Issue' 카테고리의 다른 글
      • [Eclipse, Tomcat] 404 error : 경로를 찾을 수 없습니다.
      • [SpringBoot,React] axios POST 403 Forbidden Error
      • [ASP.NET] Excel 업로드 중 프로시저가 안 먹을 경우 ( + 엑셀 셀서식 )
      emovie
      emovie

      티스토리툴바