Thymeleaf LocalDate 사용법

2020. 1. 18. 10:15·Spring

Thymeleaf LocalDateTime 사용법에 대해서 알아볼게요. Thymeleaf에서 LocalDateTime 을 처음 쓸때... 여기서 스트레스 받는 분이 은근 많더라구요.

POST 방식에서 사용하는 법.

우선 사용중인 Domain 클래스는 이런식으로 되어있어요. 아래는 생략~

product

html 파일에서 날짜를 선택할 거에요. 그래서 input 태그를 아래와 같이 만들어줬어요.

{% codeblock %}

{% endcodeblock %}

Contorller 에서는 아래와 같이 만들어 줬어요. 전체 코드는 아니고 필요한 부분만 찰칵!

{% codeblock %}

@PostMapping("/product_detail/register")
public String registerProduct(@ModelAttribute(value = "product") Product product) {
System.out.println("====== product.getManufactureDate() : " + product.getManufactureDate());
}

{% endcodeblock %}

이런식으로 시도를 해봤는데. 값이 넘어올때 에러는 나지 않지만 null 값으로 들어온다... 왤까요?!

그래서 이번엔 다르게 이런식으로다가! 시도!

localdatetime2
localdatetime3

컨트롤러와 html 파일을 이런식으로 바꿔줬어요! 그리고 실행! 하면...

localdatetime1

이렇게 에러가 나버려요 ㅠㅠ 해결방법은 아래와 같아요.

RequestParam 타입을 String 으로!

input 태그에서 type이 datetime-local 이라고 나와있는데, 이거에 혹해서 @RequestParam 변수의 타입을 LocalDateTime 으로만 고집하면 안돼요. 그냥 String 으로 바꿔보세요! 그럼 오류가 발생하지 않아요!

input 에서 넘어온 데이터를 어떻게 취급할지는 각자 필요한 방식을 사용하면 됩니다


@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)을 붙여줘요!


localdatetime4

이런식으로 @RequestParam 뒤에 붙여주세요. iso 에 대해선 조사해보세요... 해결방법을 알아내는데 시간을 꽤 많이 잡아먹어서.. 저것까지 조사할 엄두가 안나네요(당당)!

또다른 해결방법? DTO 를 만들어서 해결하는 방법도...?

GET 방식에서 사용하는 법.

이번엔 GET 방식에서 LocalDateTime 형식의 데이터를 html에 보여주는 방법에 대해 쓸게요! 먼저 컨트롤러에서 아래와 같은 메소드를 만들어 줬어요!

get1

그리고 html 파일에서는 아래와 같이 써줘요.

{% codeblock %}

{% endcodeblock %}

하면! 아래와 같이 잘 출력이 되네요...!??

thymeleaf1

아니죠! T가 가운데 붙어있는게 너무 느낌없어요. 막 지우고 싶어져요. 지울때 temporals을 이용해서 형식을 지정해줄거에요.(원리는 구글에 thymeleaf Java 8 Time Dialect 검색!)

우선 pom.xml 에 추가해주세요.

{% codeblock %}

org.thymeleaf.extras thymeleaf-extras-java8time 3.0.1.RELEASE

{% endcodeblock %}

그리고 프로젝트에 아래와 같은 config 파일을 만들어주세요.

{% codeblock %}

@Configuration
public class ProgramConfiguration {

@Bean
public Java8TimeDialect java8TimeDialect() {
return new Java8TimeDialect();
}
}

{% endcodeblock %}

마지막으로 태그에 temporals~ 를 붙여주시면 T 없이 출력이 돼요!

temporals 앞에 # 붙여야해요! 단지 편집기에서 중괄호 뒤에 #을 붙이면 오류가 나서 빼준거뿐이에요.

{% codeblock %}

{% endcodeblock %}

그러면 아래와 같이 T 없이 출력이 될거에요!

thymeleaf2

이상입니다!

반응형
'Spring' 카테고리의 다른 글
  • Resilience4jFeign Java Record 문제
  • Tomcat 실행시 스프링 내부 동작과정
  • Spring Web MCV
  • JPA findOne, getOne 차이점
Jadie Blog
Jadie Blog
  • Jadie Blog
    Jadie
    Jadie Blog
  • 전체
    오늘
    어제
    • 분류 전체보기 (44)
      • OOP (7)
      • DDD (1)
      • JAVA (8)
      • Spring (12)
      • Kafka (1)
      • TDD,Test (4)
      • Basic (1)
      • ETC (1)
      • MySQL (0)
      • Javascript (0)
      • Spark (3)
      • Infra (2)
      • Algorithm (0)
      • Network (1)
      • Jobs (0)
      • 일상 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 휴튼
  • 공지사항

  • 인기 글

  • 태그

    MASTER
    localdatetime
    테스트
    추상클래스 #인터페이스
    캡슐화
    API문서
    MSA
    routingdatasource
    의존역전원칙
    객체지향
    entitymanager
    java
    Kafka
    jpa
    Spring #ApplicationContext
    Transactional Outbox
    메시징시스템
    OAuth2 #Spring
    Resilience4jFeign
    JPQL
    springboot
    우아한스터디
    slave
    OOP
    글또
    객체지향사실과오해
    Test
    Spring
    HTTP #HTTPS
    JAVA #IO
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Jadie Blog
Thymeleaf LocalDate 사용법
상단으로

티스토리툴바