The problem is that you're opening the output stream at the beginning of
your jsp and then reopening the output stream by calling
response.getOutputStream(). I believe you can call response.reset() to
fix this problem:

<%
response.reset();
response.setContentType("image/png");
java.io.OutputStream os = response.getOutputStream();
java.awt.image.BufferedImage buffer = (java.awt.image.BufferedImage)
request.getAttribute("imageBuffer");
javax.imageio.ImageIO.write(buffer,"png",os);
os.flush();
os.close();
%>

Regards,

Thad Smith

-----Original Message-----
From: Daniel Watrous [mailto:[EMAIL PROTECTED] 
Sent: Monday, April 18, 2005 4:20 PM
To: user@struts.apache.org
Subject: binary view

I have an action in my application that generates a PNG image from
some text stored in a session object.  My view is very simple:

<[EMAIL PROTECTED] contentType="image/png"%>
<%
java.io.OutputStream os = response.getOutputStream();
java.awt.image.BufferedImage buffer = (java.awt.image.BufferedImage)
request.getAttribute("imageBuffer");
javax.imageio.ImageIO.write(buffer,"png",os);
os.close();
%>

Thats it.  My action loads imageBuffer with the image data.

The first time I load the page I get the error:
"java.lang.IllegalStateException: getOutputStream() has already been
called for this response"

Is there a better way to accomplish what I am after?  I would prefer
to load the page one time and have it work, rather than the refresh. 
Thanks in advance...

DW

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to