À l'aide de PrintWriter et OutputStream

Je suis entrain de créer un projet avec struts et j'ai un problème à l'aide de Jasper IReports. Je veux exporter des informations dans un fichier pdf et je reçois le java.lang.IllegalStateException: getOutputStream() a déjà été appeler... Exception due à l'ouverture d'un ServletOutputStream dans mon code lorsque la page ouvre déjà un PrintWriter.

Le code est dans le modèle (donc il n'est pas dans la page jsp, c'est dans un fichier java), comme il suit:

    public void handle(HttpServletResponse res, Connection connection, String path)throws Exception{
    ServletOutputStream out = null;
    try {

        JasperDesign jasperDesign = JRXmlLoader.load(path);
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, null, connection);
        res.setContentType("application/pdf");
        res.setContentLength(bytes.length);
        out = res.getOutputStream();
        out.write(bytes, 0, bytes.length);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        out.flush();
        out.close();
    }

J'ai vérifié la connexion, le chemin d'accès et le HttpServletResponse et sont tous fonctionne bien.

Je suis très débutant avec Jasper Reports, ainsi qu'avec le codage des trucs dans des PDF de sorte que vous peut -correctement - suposse que j'ai un minimum d'idée de ce que je fais ici et que, de toute évidence mon code est à copier/coller à partir de quelque part sur le net.

J'ai essayé d'utiliser PrintWriter au lieu de OutputStream, transformant les octets en une Chaîne de caractères et à l'aide de la PrintWriter.append(String) méthode (allthought n'est pas de Chaîne est CharSequence), mais il n'a pas d'extraire les données dans le fichier PDF.

J'ai essayé aussi d'obtenir le PrintWriter, fermez-la pour ouvrir la OutputStream (ne fonctionne pas) ou la couleur (ni).

Tout d'aider avec une solution d'utiliser tout que peut afficher les données dans un fichier pdf.
Merci beaucoup!

qui est l'ouverture de la PrintWriter?
Le fichier JSP tente d'ouvrir PrintWriter lorsqu'il démarre. Alors, quand j'envoie la commande au fichier jsp via ActionMapping.findforward la JSP ouvre le PrintWriter et commence à montrer le JSP. J'ai résolu ce problème en n'allant pas n'importe où avec mon findforward. Donc, il n'existe pas de fichier JSP à charger (il n'y a rien à charger) et le code PDF (via OutputStream) va à la page sans avoir à charger un fichier jsp et parce que, sans chargement PrintWriter.

OriginalL'auteur Random | 2010-01-15