Controller에서 Date 객체를 받는 방법

코딩하는범이·2020년 7월 31일
2
post-thumbnail

개발을 하다가 컨트롤러에서 yyyy-MM-dd (예: 2019-10-23) 같은 형식의 문자열을 바로 Date 객체로 받을 수 있다는 것을 알게 되었습니다.

이걸 알기 전에는.. 매번 DTO의 값을 String bitrhDate같은 형식으로 줘서 실제 Entity의 값에 맞게 매번 파싱을 해줬는데 그렇게 할 필요가 없었습니다.

코드를 보겠습니다.

DTO

@NoArgsConstructor
@AllArgsConstructor
@Entity
@Getter
@Setter
public class Member extends DateAudit {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String username;

    private String pw;

    private Date birthDate;  ## 문제의 필드

}

컨트롤러의 회원가입하는 부분을 예제로 보겠습니다.

Controller

    //회원가입
    @PostMapping
    public ResponseEntity<JSONResult> createMember(MemberDTO memberDTO) {
  		//코드부분 ~~~~~
    }

저렇게 MemberDTO가 @ModelAttribute를 통해서 들어오는 경우
String을 Date 객체에 주입 해줄수가 없습니다.

그래서 이 Date 값을 바로 받기 위해서! 이렇게

DTO

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthDate;

DTO의 필드에 @DateTimeFormat 을 사용해주면 잘 들어오게 됩니다!


다른 방법

@ModelAttribute 가 아닌 @RequestParam 을 통해서 받는다면
@RequestParam @DateTimeFormat(pattern = "yyyy-MM-dd") Date birthDate
이렇게 사용하시면 됩니다.

profile
기록 그리고 기억

0개의 댓글