스프링 프레임워크에서는 <input type="date" /> 의 값을 Date 타입으로 받기 위해 설정이 필요하다.
0. DateTimeFormat
<input type="date" />는 사용자가 특정 날짜를 선택할 수 있도록 달력 형태의 인터페이스를 제공한다. 사용자가 입력한 날짜 타입을 스프링의 컨트롤러에서는 String 타입으로 받을 수 있다. 하지만 Date 타입으로는 바로 받을 수 없는데 이는 날짜 형식의 차이 때문이다.
스프링에서 날짜 데이터를 Date 타입에 넣기 위해서는 'yyyy/MM/dd'의 형식을 가져야한다. 하지만 <input type="date" />를 사용해 들어오는 날짜 데이터는 'yyyy-MM-dd'의 형식이다.
컨트롤러에서 이 데이터를 바로 Date 객체로 받기 위해서는 @DateTimeFormat 어노테이션을 사용해야 한다.
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
public class MemberVO(
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date memBir;
...
);
@DateTimeFormat의 pattern 속성을 사용해 문자열을 Date 타입 객체로 변환할 수 있다. 위에서 말한 것처럼 <input type="date" /> 는 'yyyy-MM-dd'의 형식이므로 pattern 속성을 "yyyy-MM-dd"로 설정해 값으로 들어오는 문자열 형식을 맞추어주면 된다.
VO 클래스가 아닌 메서드 파라미터로 Date 타입을 받을 때에도 @DateTimeFormat 어노테이션을 사용하여 Date 객체로 변환할 수 있다.
@Controller
@PostMapping("/member/create")
public String create (@DateTimeFormat(pattern="yyyy-MM-dd") Date memBir){
...
}
'Java > Spring Framework' 카테고리의 다른 글
| [Spring Framework] 스프링 시큐리티와 데이터베이스 연동 (0) | 2023.02.14 |
|---|---|
| @PathVariable (0) | 2023.02.08 |
| [Spring Framework] 클라이언트 파일 다운로드 구현 (0) | 2023.02.02 |
| [Spring Framework] 파일 업로드 기본 설정 (0) | 2023.01.27 |
| [Spring Framework] @RequestBody와 @ResponseBody (0) | 2023.01.26 |