Error 오답노트

JSTL formatDate오류 | Cannot convert [2022-04-04] of type [class java.lang.String] to [class java.util.Date]

DEV-HJ 2022. 5. 20. 13:16
반응형

에러 ↓

 JSTL formatDate오류  | Cannot convert [2022-04-04] of type [class java.lang.String] to [class java.util.Date]

[class java.lang] 유형의 [2022-04-04]를 변환할 수 없습니다.String]에서 [class java.util]로 이동합니다.날짜]

String형이라서 날짜를 변환할수 없다한다. 이럴때 해결방법은?


1. jsp 상단에 

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

를 추가해주시고 날짜를 보여주려는 곳에 아래 소스와 같이 표현해주시면 됩니다.

 

2. 해당 소스는 String형을 날짜로 변경하여 변수에 넣고 그 넣은 변수를 날짜 패턴으로 노출 시키는 예제 입니다.

<fmt:parseDate value='${dto.carguip}' pattern="yyyy-MM-dd" var='carguip'/>
<fmt:formatDate value="${carguip}" pattern="yyyy-MM-dd"/>

2개의 라인을 동시에 써줘야 합니다. 하나만 쓰면 안댐

 

★ parseDate 같은 경우는 String형을 Date형으로 바꿔줍니다.

뒤에 pattern은 ${dto.carguip } 값의 형식과 동일하게 적으시면 됩니다. (다르면 오류가 발생합니다.)

formatDate 은 Date형을 지정한 패턴에 맞게 노출합니다.


parseDate, formatDate 같이 썼을대 날짜출력 완성

 <fmt:parseDate value='${dto.carguip}' pattern="yyyy-MM-dd" var='carguip'/>
<fmt:formatDate value="${carguip}" pattern="yyyy-MM-dd"/>


parseDate만 썼을때 출력화면 pattern이 안먹는다

<fmt:parseDate value='${dto.carguip}' pattern="yyyy-MM-dd" />


만약 두개를 안쓰고 

1
<fmt:formatDate value="${dto.cargutp }" pattern="yyyy-MM-dd"/> <!-- 잘못된 경우 -->

위와 같이 String형을 바로 formatDate 적용해서 적용하시면 아래와 같이 오류가 발생합니다.

 

javax.el.ELException: Cannot convert 20160510 of type class java.lang.String to class java.util.Date

 

날짜 패턴을 지정해서 보여주실 때는 맨 위와 같이 사용 하시면 됩니다.

 

반응형