CSV jsp生成的文件,如何插入一个break行

时间:2010-09-09 11:41:25

标签: jsp csv

我正在尝试使用jsp文件生成一个csv文件,其代码为:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%-- Set the content type --%>
<%@ page contentType="text/csv"%>

<c:forEach items="${chartData}" var="chartDataEntry" varStatus="status">
 ${chartDataEntry.date}, ${chartDataEntry.open}, ${chartDataEntry.high}, ${chartDataEntry.low}, ${chartDataEntry.close}, ${chartDataEntry.volume}
</c:forEach>

它非常简单,而且工作正常。问题是我需要在每一行之后插入一个断裂线,但我不能让它工作。我曾经尝试过平时:\ n \ r \ n等等。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

在JSP中,有太多的环境因素会导致这种情况发生变形。 JSP本身也会发出一些“无意的”空白和其他字符。此外,trimSpaces设置可能会占用一些空格/换行符。一般认为(ab)将JSP用于普通HTML以外的其他东西是不好的做法。

而是使用servlet代替健壮且一致的CSV输出:

protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    response.setContentType("text/csv");
    PrintWriter writer = response.getWriter();
    for (ChartDataEntry chartDataEntry : chartData) {
        writer.append(chartDataEntry.getDate()).append(',');
        writer.append(chartDataEntry.getOpen()).append(',');
        writer.append(chartDataEntry.getHigh()).append(',');
        writer.append(chartDataEntry.getLow()).append(',');
        writer.append(chartDataEntry.getClose()).append(',');
        writer.append(chartDataEntry.getVolume()).println();
    }
}

答案 1 :(得分:0)

您提供的代码应生成新行(可能是其中的几行)。你确定它不是渲染的问题吗? (即你在浏览器中查看它,并且由于没有
标签,输出会在一行上呈现?

相关问题