我有这个控制器:
@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
注释的方法仅处理由同一类中的处理程序方法引发的异常。另一方面,您的异常是从View
的render
方法中引发的,此时它离开了控制器/处理程序层。
在Spring中,无法很好地处理视图层中的异常,这主要是因为很难使其与Servlet API可靠地协同工作,因此我建议您创建ExcelView
的子类并在其中处理异常。