La configuration de Spring MVC contrôleur pour envoyer des fichier client

Je pense que mon scénario est assez commun. J'ai une base de données et je veux que mon Spring MVC application à accepter une demande dans le contrôleur, il faut appeler la DB de service pour obtenir les données et envoyer des données au client en tant que fichier CSV. Je suis à l'aide de la JavaCSV bibliothèque trouvé là pour les aider dans le processus: http://sourceforge.net/projects/javacsv/

J'ai trouvé plusieurs exemples de gens qui font des choses similaires et bricolé quelque chose qui semble correct-ish. Quand j'ai frappé la méthode, cependant, rien de ce qui se passe vraiment.

Je pensais que l'écriture de données sur le HttpServletResponse's outputStream serait suffisant, mais apparemment, je suis en manque de quelque chose.

Voici mon code de contrôleur:

@RequestMapping(value="/getFullData.html", method = RequestMethod.GET)
public void getFullData(HttpSession session, HttpServletRequest request, HttpServletResponse response) throws IOException{
    List<CompositeRequirement> allRecords = compReqServ.getFullDataSet((String)session.getAttribute("currentProject"));

    response.setContentType("data:text/csv;charset=utf-8"); 
    response.setHeader("Content-Disposition","attachment; filename=\yourData.csv\"");
    OutputStream resOs= response.getOutputStream();  
    OutputStream buffOs= new BufferedOutputStream(resOs);   
    OutputStreamWriter outputwriter = new OutputStreamWriter(buffOs);  

    CsvWriter writer = new CsvWriter(outputwriter, '\u0009');  
    for(int i=1;i <allRecords.size();i++){              
        CompositeRequirement aReq=allRecords.get(i);  
        writer.write(aReq.toString());  
    }     
    outputwriter.flush();   
    outputwriter.close();

};

Ce qui me manque ici? Fondamentalement, l'effet net est... rien. J'aurais pensé que le réglage de l'en-tête de type de contenu et serait la cause de mon navigateur pour revenir sur la réponse et de déclencher le téléchargement d'un fichier à l'action.

  • Trouvé le problème. J'ai essayé de traiter les données de réponse quand il était déjà dans le format correct. Le code ci-dessus fonctionne lorsque le site tout simplement hrefs à getFullData.html. En bref, rien à voir ici...se déplacer le long :):)
InformationsquelleAutor Raevik | 2012-03-28