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; ➐
}
}