Spring 3的ExceptionHandling

时间:2011-01-03 11:25:57

标签: java spring exception-handling spring-mvc

我有这个控制器:

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

    return "excel";

excel wiew实际上打开了一个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";
    }

    }

但是我收到有关例外的服务器错误消息。也许缺少一个bean定义?

1 个答案:

答案 0 :(得分:2)

@ExceptionHandler - 带注释的方法只处理同一个类中处理程序方法抛出的异常。另一方面,您的异常是从View的{​​{1}}方法中抛出的,此时它离开了控制器/处理程序层。

在Spring中处理异常不能很好地处理视图层中的异常,主要是因为使用servlet API很难让它可靠地工作,所以我建议你创建一个render的子类并处理异常在那里。