[jboss-user] [JBoss Seam] - Error when downloading file to browser

todd.nash@gmail.com do-not-reply at jboss.com
Fri Feb 1 22:17:03 EST 2008


I would really appreciate some answers on this one...

I have a page that allows the user to download a file that is stored in the database as a BLOB. The following exception is thrown when the download link is clicked.  I can trace through my method to the point where the reponse is returning through the Seam filters, so I know that the method is  returning the bytes associated with the file.

java.lang.IllegalStateException: Servlet response already use stream, Writer not possible
  | 	at org.ajax4jsf.webapp.FilterServletResponseWrapper.getWriter(FilterServletResponseWrapper.java:226)
  | 	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
  | 	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
  | 	at javax.servlet.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
  | 	at com.sun.facelets.FaceletViewHandler.createResponseWriter(FaceletViewHandler.java:414)
  | 	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:571)
  | 	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:108)
  | 	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:216)
  | 	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
  | 	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
  | 	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
  | ...

My page looks like this:

<h:panelGrid id="document" columns="2">
  |                         <h:outputLabel value="Location"/>
  |                         <h:outputText value="#{documentLocation.location}"/>
  | 
  |                         <h:outputLabel value="Upload Date"/>
  |                         <h:outputText value="#{documentLocation.uploadDate}"/>
  | 
  |                         <h:outputLabel value="Content Type"/>
  |                         <h:outputText value="#{documentLocation.contentType}"/>
  | 
  |                         <h:outputLabel value="Description"/>
  |                         <h:outputText value="#{documentLocation.notes}"/>
  | 
  |                         <h:panelGroup>
  |                             <s:link id="downloadDocument" value="Download"
  |                                       action="#{documentManager.onDownload}"
  |                                     view="/download.xhtml">
  |                                 <f:param name="docId" value="#{documentLocation.id}"/>
  |                             </s:link>
  |                         </h:panelGroup>
  |                     </h:panelGrid>
  | 
  | 

The onDownload method looks like this:

  | public String onDownload()
  |     {
  |         System.out.println( "DocumentManagerAction.onDownload() called" );
  |         System.out.println( "Value of doc id is " + docId );
  | 
  |         HttpServletResponse response = ( HttpServletResponse ) facesContext.getExternalContext().getResponse();
  | 
  |         response.setContentType( "application/pdf" );
  |         try
  |         {
  |             byte[] docData = getDocumentData();
  | 
  |             if ( docData != null && docData.length > 0 )
  |             {
  |                 response.setContentLength( docData.length );
  |                 os.write( docData );
  |                 os.flush();
  |                 os.close();
  | 
  | 
  |                 System.out.println( "\nSuccess\n" );
  |             }
  |             facesContext.responseComplete();
  | 
  |         }
  |         catch ( Exception e )
  |         {
  |             System.out.println( "\nFailure : " + e.toString() + "\n" );
  |             return null;
  |         }
  | 
  |         return "done";
  |     }

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4125731#4125731

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4125731



More information about the jboss-user mailing list