더북(TheBook)

7.3.3 실습 @InitBinder를 이용하여 커스텀 데이터 바인딩하기

@InitBinder를 사용하여 도서 등록 페이지에서 입력된 모든 파라미터 값을 커맨드 객체로 바인딩해서 저장소 객체에 신규 도서 정보를 저장하는 것을 구현해 보겠습니다.

1. BookController 클래스에서 initBinder() 메서드를 추가합니다. 이때 @InitBinder를 설정하여 커맨드 객체의 모든 프로퍼티(필드)를 허용합니다.

코드 7-11 BookController.java

package com.springmvc.controller;
...
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
...
@Controller
@RequestMapping("/books")
public class BookController {
    ...
    @ModelAttribute 
    public void addAttributes(Model model) { 
        model.addAttribute("addTitle", "신규 도서 등록");
    }

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.setAllowedFields("bookId", "name", "unitPrice", "author", "description", "publisher", "category", "unitsInStock", "totalPages", "releaseDate", "condition"); 
    }
}

폼 페이지에서 바인딩할 커맨드 객체의 프로퍼티(필드) 이름들을 설정합니다.

실행 결과는 그림 7-8과 같으니 확인하기 바랍니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.