Jsf 额外</html>;创建CSV时的标记

Jsf 额外</html>;创建CSV时的标记,jsf,export-to-csv,Jsf,Export To Csv,我正在尝试开发一个函数,以便使用JSF导出CSV文件。这是我开发的代码 StringBuilder cardReport = getCoreService().createCardReport(cardType.getId()); HttpServletResponse response = (HttpServletResponse) WebFlowUtils.getExternalContext().getNativeResponse(); response.setContentType("t

我正在尝试开发一个函数,以便使用JSF导出CSV文件。这是我开发的代码

StringBuilder cardReport = getCoreService().createCardReport(cardType.getId());
HttpServletResponse response = (HttpServletResponse) WebFlowUtils.getExternalContext().getNativeResponse();
response.setContentType("text/comma-separated-values; charset=utf8");
byte[] buffer = cardReport.toString().getBytes();
response.setContentLength(buffer.length);
response.getOutputStream().write(buffer);
response.setHeader("Content-Disposition", "attachment;filename=\"report.csv\"");
response.getOutputStream().flush();
response.getOutputStream().close();
WebFlowUtils.getExternalContext().recordResponseComplete();

问题在于每次导出结果时,都会在文件内容的末尾插入一个冗余的
标记。此外,我的内容与HTML无关。当我调试代码时,我看到html标记不存在,它将在导出时插入。如何修复此问题?

什么是
WebFlowUtils
?这只是一个本地包装库,以便更轻松地调用某些函数。它只是对输出没有任何影响。我测试并注释了最后一行代码,没有任何更改。因此,它是无影响的,或者
cardReport
一开始就错了,或者
响应
被破坏了。你查过前者了吗?在不知道如何获得响应对象的情况下,很难判断它可能出了什么问题。最好是将
StringBuilder
的内容直接写入响应中,而不是写入其字节。