Table of Contents
JSTL LocalDateTime format
LocalDateTime 을 제대로 format 해주는 라이브러리가 없기에 별도로 생성해 주어야 합니다.
아래에 커스텀 태그를 생성하는 방법을 정리합니다.
클래스 생성
public final class Dates {
private Dates() {}
public static String formatLocalDateTime(LocalDateTime localDateTime, String pattern) {
if (localDateTime == null) {
return "";
}
return localDateTime.format(DateTimeFormatter.ofPattern(pattern));
}
}
/WEB-INF/functions.tld
uri
와 function-class
를 적당히 수정해 줍니다.
<?xml version="1.0" encoding="UTF-8" ?>
<taglib
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<tlib-version>1.0</tlib-version>
<short-name>Custom_Functions</short-name>
<uri>http://kr.pe.skyer9.warehouseweb/functions</uri>
<function>
<name>formatLocalDateTime</name>
<function-class>kr.pe.skyer9.warehouseweb.core.Dates</function-class>
<function-signature>java.lang.String formatLocalDateTime(java.time.LocalDateTime, java.lang.String)</function-signature>
</function>
</taglib>
JSP
JSP 에서 아래와 같이 사용할 수 있습니다.
<%@taglib uri="http://kr.pe.skyer9.warehouseweb/functions" prefix="f" %>
${f:formatLocalDateTime(user.lastupdate, 'yyyy-MM-dd HH:mm:ss')}
LocalDateTime의 toString() 메서드 사용 시 00초가 사라지는 경우
시간이 2023-02-20 18:14:00
와 같이 끝이 00 초가 되는 경우,
toString() 에 의해 나오는 값이 2023-02-20 18:14
와 같이 끝에 00 초가 사라지는 문제가 있습니다.
위 커스텀 태그를 이용하면 이 문제도 같이 해결됩니다.