我在一个 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/