2010-09-09 11 views
2

Je suis en train de générer un fichier csv en utilisant un fichier jsp ce son code:CSV jsp fichier généré, comment insérer une ligne de rupture

<%@ 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> 

Son tout à fait simple, et il fonctionne très bien. Le problème est que j'ai besoin d'insérer une ligne de rupture après chaque ligne, mais je ne peux pas le faire fonctionner. J'ai essayé avec les habituels: \ n \ r \ n et ainsi de suite.

Des idées?

Répondre

2

Dans une JSP, il y a trop de facteurs environnementaux qui peuvent le déformer. Le JSP lui-même émet également des espaces et d'autres caractères "involontaires". En outre, le paramètre trimSpaces peut manger des espaces/des retours à la ligne. Il est généralement considéré comme une mauvaise pratique de (ab) utiliser JSP pour autre chose que le HTML.

utiliser plutôt un servlet plutôt pour une sortie CSV robuste et cohérente:

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(); 
    } 
} 
+0

Merci beaucoup, je pense que cela fonctionnerait, mais à cause de l'architecture de mon le projet n'est pas une solution valide pour moi.Je vais jeter un coup d'oeil au réglage de trimSpaces –

+0

J'ai finalement changé quelques choses et suis allé de cette façon.Merci beaucoup! –

0

Le code fourni devrait générer de nouvelles lignes (probablement plusieurs d'entre eux). Êtes-vous sûr que ce n'est pas une question de rendu? (c'est-à-dire que vous le regardez dans un navigateur, et puisqu'il n'y a pas de tag
, la sortie est affichée sur une seule ligne?)

+0

Merci pour votre réponse! J'ai seulement vérifié les résultats Je vais essayer de l'écrire dans un fichier mais pour être honnête, je pense que ce n'est pas le problème, car l'application qui lit le texte csv agit comme si tout était une ligne. –

Questions connexes