java - 从 spring Controller 返回 csv 文件时的奇怪行为

标签 java spring spring-mvc cross-browser

我在一个 spring 应用程序中工作,它有一个返回 CSV 文件的操作方法。

此操作工作正常,但在某些情况下它会抛出预定义的异常 (MyAppException)。

我有另一个方法被注释@ExceptionHandler(MyAppException.class)

在异常处理程序方法中,我返回了另一个内容不同的 csv 文件。

两种方法中返回csv文件的代码几乎相同。

List<String[]> list= new ArrayList<String[]>();
list.add(new String[]{
   integrationRequestErrorLog.getErrorMessage(),
   Long.toString(integrationRequestErrorLog.getId()),
   Integer.toString(integrationRequestErrorLog.getErrorCode())
});
CSVWriter writer = new CSVWriter(response.getWriter(), ',');
writer.writeAll(list);
writer.close();

两种方法的区别在于内容列表。

在第一个方法中,文件正常返回,而在异常处理程序方法中,我有一个奇怪的行为。

异常处理程序方法在 Opera 浏览器上运行良好,而在 FireFox 上它给了我一个 404。

Opera 浏览器也给我 404 但它下载文件而 firefox 不下载文件?

我真的不明白这里有什么区别。

最佳答案

是否在响应中正确设置了 Content-Type HTTP header ? Firefox 和 Opera 处理事情的方式可能不同。而且,我怀疑 Spring 异常处理程序根本没有设置它。您可能希望将其显式设置为 text/csv

关于java - 从 spring Controller 返回 csv 文件时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4553036/

相关文章:

java - 在递归中传递对象参数有更有效的方法吗?

java - 字符串基数排序 - StringIndexOutOfBoundsEception

Spring webflux,测试 `ServerResponse`

java - 从属性/XML 文件中设置 web.xml 中的上下文参数

java - 使用嵌入在 Neo4j 中的不同数据库与 Java

java - 在 Swing 中不同类的 JPanel 上绘画

java - 如何从 Spring messageSource 手动重新加载属性文件

spring - 在 weblogic 10.3.6 中部署 Spring 4.1.6 mvc webapp

java - 为什么 Spring 在处理端点异常时将 RuntimeException 包装在 NestedServletException 中?

java - 雇用 Spring MVC 数据绑定(bind)器