2011-01-03 6 views
2

У меня есть этот контроллер:ExceptionHandling с пружиной 3

@RequestMapping(value = "*.xls", method = RequestMethod.GET) 
public String excel(Model model) { 

    return "excel"; 

wiew Excel открывает фактически ExcelViewer, который является построить в методе

protected void buildExcelDocument(Map<String, Object> map, WritableWorkbook ww, HttpServletRequest hsr, HttpServletResponse hsr1) throws Exception { 

Class.writecontent 
Class.writeMoreContent 

Названные методы написать содержание в листе Excel, и они могут например, biffException. Как я могу показать определенную страницу ошибки при возникновении исключения?

Я попробовал этот

@Controller 
public class ExcelController 
{ 


    @ExceptionHandler(BiffException.class) 
    public String handleException(BiffException ex) { 

    return "fail"; 
    } 


    @RequestMapping(value = "*.xls", method = RequestMethod.GET) 
    public String excel(Model model) { 

     return "excel"; 
    } 

    } 

Но я получаю сообщение об ошибке сервера об исключениях. Может быть, отсутствует определение компонента?

ответ

2

@ExceptionHandler -annotated методы обрабатывают только исключения, обработанные методами обработчика в том же классе. С другой стороны, ваше исключение выбрасывается из метода Viewrender, после чего он покидает уровень контроллера/обработчика.

Обработка исключений из уровня представления плохо обрабатывается весной, главным образом потому, что трудно заставить ее работать надежно с помощью API сервлета, поэтому я рекомендую создать подкласс ExcelView и обрабатывать там исключение.

Смежные вопросы