message "getOutputStream() has already been called for this response" impossible à supprimer
Bonjour,
je travaille sur un programme qui doit utiliser un stream pour télécharger un fichier PDF à partir d'un lien dans une page Web JSTL
Le programme fonctionne (le téléchargement se fait bien) mais j'ai toujours le message :
Code:
1 2
| ERROR [http-0.0.0.0-8000-Processor1] core.StandardWrapperValve (StandardWrapperValve.java:253) - Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: getOutputStream() has already been called for this response |
je n'arrive pas à trouver la cause.
si je mets des traces dans le programme JSP lorsque je clique sur le lien de ma page web, la trace est bien affichée avant d'afficher l’exception. Du coup je ne sais pas où se situe le problème.
Je ne sais plus où chercher.
Extrait de ma page web
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| <table>
<c:forEach items="${myList3}" var="item">
<tr>
<td>
<a href="lire.jsp?url=<c:out value="${item.lienAcces}" />"><c:out value='${item.lienAffiche}'/></a>
</td>
</tr>
</c:forEach>
</table> |
gestion du stream dans mon programme JSP
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| try
{
BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
OutputStream out1 = (OutputStream)response.getOutputStream ();
response.setContentType( "application/pdf" );
BufferedOutputStream bos = null;
bos = new BufferedOutputStream(out1);
byte[] buff = new byte[2048];
int bytesRead;
while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
if (bis != null)
bis.close();
if (bos != null)
bos.close();
System.out.println("affiche ce message avant d'afficher le message d'erreur !!!")
} |
merci d'avance pour vos idées