Bom dia pessoal,
estou fazendo uma função para download na aplicação que estou trabalhando. Segue o código:
[code]public String download() throws IOException {
Attachment attachment = AttachmentDao.find(idAttachment,entityManager);
if(attachment==null) {
return "File not found.";
}
byte[] data = AttachmentUtil.getPhisicalAttachment(attachment);
HttpServletResponse response = (HttpServletResponse) extCtx.getResponse();
response.setContentType(attachment.getContentType());
response.addHeader("Content-disposition", "attachment; filename=" + attachment.getName() +"\"");
response.setContentLength(data.length);
//nesta linha ocorre o erro
ServletOutputStream os = response.getOutputStream();
os.write(data);
os.flush();
os.close();
facesContext.responseComplete();
return null;
}[/code]
Porem estou com dificuldade para criar essa função, pois me retorna o seguinte erro:
Alguém poderia me ajudar dando uma luz de como resolver isso? Grato.
12:34:00,951 GRAVE [facelets.viewhandler] Error Rendering View[/DownloadAttachment.xhtml]: javax.faces.FacesException: javax.el.ELException: /DownloadAttachment.xhtml @9,59 value="#{downloadAttachment.download()}": java.lang.IllegalStateException: Servlet response already use Writer, OutputStream not possible
at javax.faces.component.UIOutput.getValue(UIOutput.java:187) [:1.2_15-20100816-SNAPSHOT]
at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getValue(HtmlBasicInputRenderer.java:201) [:1.2_15-20100816-SNAPSHOT]
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.getCurrentValue(HtmlBasicRenderer.java:287) [:1.2_15-20100816-SNAPSHOT]
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeEnd(HtmlBasicRenderer.java:154) [:1.2_15-20100816-SNAPSHOT]
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:864) [:1.2_15-20100816-SNAPSHOT]
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:937) [:1.2_15-20100816-SNAPSHOT]
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933) [:1.2_15-20100816-SNAPSHOT]
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592) [:2.2.2.Final]
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) [:3.3.3.Final]
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) [:3.3.3.Final]
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) [:1.2_15-20100816-SNAPSHOT]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) [:1.2_15-20100816-SNAPSHOT]
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [:1.2_15-20100816-SNAPSHOT]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) [:1.2_15-20100816-SNAPSHOT]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) [:2.2.2.Final]
at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) [:2.2.2.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [:2.2.2.Final]
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) [:2.2.2.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [:2.2.2.Final]
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) [:2.2.2.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [:2.2.2.Final]
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) [:2.2.2.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [:2.2.2.Final]
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206) [:3.3.3.Final]
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) [:3.3.3.Final]
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) [:3.3.3.Final]
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) [:3.3.3.Final]
at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) [:2.2.2.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [:2.2.2.Final]
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) [:2.2.2.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final]
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) [:6.1.0.Final]
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final]
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]
at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]
at java.lang.Thread.run(Unknown Source) [:1.6.0_45]
Caused by: javax.el.ELException: /DownloadAttachment.xhtml @9,59 value="#{downloadAttachment.download()}": java.lang.IllegalStateException: Servlet response already use Writer, OutputStream not possible
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:76) [:1.1.15.B1]
at javax.faces.component.UIOutput.getValue(UIOutput.java:184) [:1.2_15-20100816-SNAPSHOT]
... 49 more
Caused by: java.lang.IllegalStateException: Servlet response already use Writer, OutputStream not possible
at org.ajax4jsf.webapp.FilterServletResponseWrapper.getOutputStream(FilterServletResponseWrapper.java:226) [:3.3.3.Final]
at javax.servlet.ServletResponseWrapper.getOutputStream(ServletResponseWrapper.java:140) [:1.0.0.Final]
at sunseterp.session.components.attachment.DownloadAttachment.download(DownloadAttachment.java:54) [:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_45]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_45]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_45]
at java.lang.reflect.Method.invoke(Unknown Source) [:1.6.0_45]
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [:2.2.2.Final]
at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32) [:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) [:2.2.2.Final]
at sunseterp.session.interceptor.SunsetTransactionInterceptor.aroundInvoke(SunsetTransactionInterceptor.java:27) [:]
at sun.reflect.GeneratedMethodAccessor678.invoke(Unknown Source) [:1.6.0_45]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_45]
at java.lang.reflect.Method.invoke(Unknown Source) [:1.6.0_45]
at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) [:2.2.2.Final]
at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:187) [:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:72) [:2.2.2.Final]
at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) [:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [:2.2.2.Final]
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77) [:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [:2.2.2.Final]
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) [:2.2.2.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [:2.2.2.Final]
at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) [:2.2.2.Final]
at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) [:2.2.2.Final]
at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103) [:2.2.2.Final]
at sunseterp.session.components.attachment.DownloadAttachment_$$_javassist_seam_35.download(DownloadAttachment_$$_javassist_seam_35.java) [:]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_45]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_45]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_45]
at java.lang.reflect.Method.invoke(Unknown Source) [:1.6.0_45]
at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335) [:1.0_02.CR5]
at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:280) [:1.0_02.CR5]
at org.jboss.el.parser.AstMethodSuffix.getValue(AstMethodSuffix.java:59) [:1.0_02.CR5]
at org.jboss.el.parser.AstValue.getValue(AstValue.java:67) [:1.0_02.CR5]
at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) [:1.0_02.CR5]
at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71) [:1.1.15.B1]
... 50 more