Spring mvc - 发布请求并在出现错误的情况下停留在同一页面

时间:2017-03-03 13:10:06

标签: java excel spring spring-mvc

我需要在控制器中创建一个动作来生成excel文件。问题是,如果发生错误,页面会被更改,但我希望保持显示该错误的同一页面。

我在我的控制器中有这个动作:

@RequestMapping(value="/excel", method = RequestMethod.POST)
public String generateExcel(HttpServletResponse response, Model model)

如果出现错误,我想留在同一页面上:

    if(noError){
      // generate Excel
      response.setHeader("Content-disposition","attachment; filename= "excel.xls");
      response.setContentType("application/vnd.ms-excel");
      //...
      return "";
    } else {
      // stay on the same page and show error
      // TODO
      return ?;
    }

我的Excel生成工作正常但发生错误时会显示新页面。我无法进行ajax调用来生成excel。 有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

使用GetMapping:

@GetMapping(value = "/download")
public void download(
        @RequestParam("fileReference") String fileReference, // sample param
        HttpServletResponse response) throws IOException {
    Assert.hasText(fileReference);
    try {
        response.setContentType("application/octet-stream");
        response.addHeader("Content-Disposition", "attachment; filename=myfilename.pdf");
        response.setContentLength(...);
        response.setBufferSize(...);
        response.getOutputStream().write(...);
    } finally {
        response.getOutputStream().close();
    }
}

然后使用

打开您的链接
target="_blank"

答案 1 :(得分:0)

重定向到同一页面可以是一个选项。 请记住,如果您要刷新页面,您将丢失页面中的所有信息。 我只是说这个控制器将负责保存。