더북(TheBook)

3. 웹 브라우저 주소창에 ‘http://localhost:8080/BookMarket/books/book?id=ISBN0000’을 입력하여 실행 결과를 확인합니다.

▲ 그림 10-6 실행 결과

4. BookController 클래스에 @ExceptionHandler를 설정한 handleError() 메서드를 추가하여 작성합니다.

코드 10-5 BookController.java

package com.springmvc.controller;
...
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.ExceptionHandler;
import com.springmvc.exception.BookIdException;

@Controller
@RequestMapping("/books")
public class BookController {
    ...
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.setAllowedFields("bookId", "name", "unitPrice", "author", "description", "publisher", "category", "unitsInStock", "totalPages", "releaseDate", "condition", "bookImage");
    }

    @ExceptionHandler(value={BookIdException.class}) 
    public ModelAndView handleError(HttpServletRequest req, BookIdException exception) {
         ModelAndView mav = new ModelAndView(); 
         mav.addObject("invalidBookId", exception.getBookId()); 
         mav.addObject("exception", exception); 
         mav.addObject("url", req.getRequestURL() + "?" + req.getQueryString()); 
         mav.setViewName("errorBook"); 
         return mav; 
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.