2012-07-14 2 views
0
나는 2.1.5 primefaces 3.2 웹 로직 서버 버전을 내-에 직면 해 사용하고

를 호출 할 수 없습니다하면 FileDownload는로 getOutputStream 이후로 getWriter()() 오류

java.lang.IllegalStateException: strict servlet API: cannot call getWriter() after getOutputStream() 
at weblogic.servlet.internal.ServletResponseImpl.getWriter(ServletResponseImpl.java:309) 
at org.apache.myfaces.context.servlet.ServletExternalContextImpl.getResponseOutputWriter(ServletExternalContextImpl.java:185) 
at org.apache.myfaces.renderkit.ErrorPageWriter.handle(ErrorPageWriter.java:469) 
at org.apache.myfaces.context.MyFacesExceptionHandlerWrapperImpl.handle(MyFacesExceptionHandlerWrapperImpl.java:301) 
at javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.java:64) 
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:191) 
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197) 
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:292) 
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) 
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) 
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) 
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3592) 
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121) 
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202) 
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108) 
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432) 
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201) 
at weblogic.work.ExecuteThread.run(ExecuteThread.java:173) 

는 웹 로직의 버그 또는 아마도 내 코드에 버그가 있는지 모르겠어요 : 나는 다음과 같은 오류 메시지가?

이 메시지는 내가 가진 유일한 참조이며, 내가 어떻게이 문제를

에게 JSF 파일을 해결하는 단서가없는 :

<p:commandButton id="genButton" value="Generate Files" disabled="#{bean.disableButton}" actionListener="#{bean.generate}" onclick="PrimeFaces.monitorDownload(showStatus, hideStatus)" ajax="false" style="width:200px" icon="ui-icon-shuffle"> 
     <p:fileDownload value="#{bean.zipfile}"/> 
     </p:commandButton> 

빈 (bean) :

 File zip = File.createTempFile(selectedCode, "zip"); 

      ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zip.getPath())); 
      for (File file : adapter.listFiles) { 
       addFileToZip(file, zos); 
      } 

      InputStream in = new FileInputStream(zip); 
      file = new DefaultStreamedContent(in, "zip", selectedCode + ".zip"); 
      adapter.listFiles.clear(); 
      zos.flush(); 
      zos.close(); 
+0

아마 맞 겠지만 문제는 내 코드에 있지만 결함을 어떻게 분리 할 수 ​​있을지 전혀 모르겠다. "어떤 서블릿/페이지가 출력 스트림에 쓰고 있는지 가리 킵니 다." 예제를 추가해 주시겠습니까? – angus

답변

0

내가 솔루션 :

목록이 비어 다음 인 경우를 발견처럼 모양이야 ... 도움을

else { 
      if (streamedContent != null) { 
       streamedContent.getStream().close(); 
       streamedContent = null; 
      } 
     } 

감사합니다.

2

stacktrace는 MyFaces 예외 처리기가 처리하려고했음을 알립니다. 예외가 발생했을 때

at org.apache.myfaces.context.MyFacesExceptionHandlerWrapperImpl.handle(MyFacesExceptionHandlerWrapperImpl.java:301) 
at javax.faces.context.ExceptionHandlerWrapper.handle(ExceptionHandlerWrapper.java:64) 

에만 일어날 것입니다. 그러나 응답 작성자를 얻을 수 없으므로 MyFaces 예외 처리기가 예외 처리에 실패했기 때문에 의 예외 세부 사항은 예외입니다.

MyFaces 예외 처리기를 사용 중지하면 실제 예외 세부 정보가 표시됩니다.

관련 문제