Je crée un projet avec des entretoises et j'ai un problème avec Jasper IReports. Je veux exporter quelques informations dans un fichier pdf et je continue d'obtenir le java.lang.IllegalStateException: getOutputStream() a déjà été appelé ... Exception due à l'ouverture d'un ServletOutputStream dans mon code lorsque la page ouvre déjà un PrintWriter.Utilisation de PrintWriter et OutputStream
Le code est dans le modèle (il est donc pas dans le jsp, il est dans un fichier java), comme 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 et le HttpServletResponse et sont tout fonctionne bien. Je suis très novice avec Jasper Reports ainsi que pour coder des choses en PDF, ce qui fait que je peux dire que j'ai une idée minimale de ce que je fais ici et que, évidemment, mon code est copié/collé de quelque part à travers le net.
J'ai essayé d'utiliser PrintWriter au lieu de OutputStream, en transformant des octets en chaîne et en utilisant la méthode PrintWriter.append (String) (allShought n'est pas String is CharSequence), mais il n'en extrait pas les données dans le PDF.
J'ai également essayé d'obtenir le PrintWriter, fermez-le pour ouvrir le OutputStream (n'a pas fonctionné) ou le vider (aucun).
Toute aide avec une solution pour utiliser n'importe quelle sortie qui pourrait montrer les données dans un pdf serait grande. Merci beaucoup!
qui ouvre le PrintWriter? – Bozho
Le fichier JSP tente d'ouvrir PrintWriter au démarrage. Ainsi, lorsque j'envoie le contrôle au fichier jsp via ActionMapping.findforward, le JSP ouvre le PrintWriter et commence à afficher le JSP. J'ai résolu cela en ne allant nulle part avec mon findforward. Donc, il n'y a pas de fichier JSP à charger (il n'y a rien à charger) et le code PDF (via OutputStream) va à la page sans charger un fichier jsp et sans cela, sans charger PrintWriter. – Random