JSP 페이지 에서 날짜 값을 파라미터로 전달 할 때, 서버에서 String 으로 오는 날짜 값을 파싱하여, Date 객체로 넣는 작업이 예외 발생 시 Bad Request 가 발생 하였다. 이를 해결 하기 위해서는 직접 파싱 후 바인딩 하는 작업을 해줘야 한다. @initBinder 기능을 사용하면 되겠다.


@InitBinder
public void initBinder(WebDataBinder binder) throws Exception {
    binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {

        public void setAsText(String text) throws IllegalArgumentException {
            try {
                setValue(new SimpleDateFormat("yyyy-MM-dd").parse(text));
            } catch (ParseException e) {
                setValue(null);
            }
        }
    });
}


요청을 받는 Controller 에 해당 코드를 추가 한다. setAsText(String text) 구현은 자유롭게 하면 되겠다. 위 코드는 샘플 이다. String 으로 전달되는 값을 Date 객체로 변경하여 넣어준다. 위 코드를 작성 했다면, Date 로 전달 되는 값을 받아볼 수 있게 된다.


+ Recent posts