我有这个控制器:

@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定义?

最佳答案

@ExceptionHandler注释的方法仅处理由同一类中的处理程序方法引发的异常。另一方面,您的异常是从Viewrender方法中引发的,此时它离开了控制器/处理程序层。

在Spring中,无法很好地处理视图层中的异常,这主要是因为很难使其与Servlet API可靠地协同工作,因此我建议您创建ExcelView的子类并在其中处理异常。

10-07 16:02
查看更多