Recarregar página depois de um download - JSF/Primefaces [RESOLVIDO]

2 respostas
J

Preciso de uma solução onde depois do download de um arquivo a página seja recarregada.

Quanto tento fazer isso num "action" depois do download recebo:
Exception when handling error trying to reset the response.: java.lang.IllegalStateException
	at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:436) [jbossweb-7.0.10.Final.jar:]
	at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:170) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
	at org.springframework.security.web.firewall.FirewalledResponse.sendRedirect(FirewalledResponse.java:25) [spring-security-web-3.2.3.RELEASE.jar:3.2.3.RELEASE]
	at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:170) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
	at org.springframework.security.web.context.SaveContextOnUpdateOrErrorResponseWrapper.sendRedirect(SaveContextOnUpdateOrErrorResponseWrapper.java:107) [spring-security-web-3.2.3.RELEASE.jar:3.2.3.RELEASE]
	at javax.servlet.http.HttpServletResponseWrapper.sendRedirect(HttpServletResponseWrapper.java:170) [jboss-servlet-api_3.0_spec-1.0.0.Final.jar:1.0.0.Final]
	at org.jboss.weld.servlet.ConversationPropagationFilter$1.sendRedirect(ConversationPropagationFilter.java:83) [weld-core-1.1.5.AS71.Final.jar:2012-02-10 15:31]
	at com.sun.faces.context.ExternalContextImpl.redirect(ExternalContextImpl.java:576) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
	at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:182) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:130) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
	at javax.faces.component.UICommand.broadcast(UICommand.java:315) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
Estou baixando assim:
private void baixarArquivo(byte[] bytes, String nomeAquivo) throws IOException {

		FacesContext facesContext = FacesContext.getCurrentInstance();

		HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
		ServletOutputStream servletOutputStream = response.getOutputStream();

		response.setContentType("application/pdf");
		response.setHeader("Content-Disposition", "attachment;filename=\"" + nomeAquivo + "\"");

		servletOutputStream.write(bytes);
		servletOutputStream.flush();
		servletOutputStream.close();
		facesContext.responseComplete();
	}

Alguém tem alguma ideia?

2 Respostas

A

Posta a solução ai amigão ??? :slight_smile:

J
Pro meu caso resolveu diretinho como segue:
protected void gerarArquivo(byte[] bytes, String nomeAquivo) throws IOException {
		FacesContext facesContext = FacesContext.getCurrentInstance();
		HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
		ServletOutputStream servletOutputStream = response.getOutputStream();

		response.setContentType("application/pdf");
		response.setHeader("Content-Disposition", "attachment;filename=\"" + nomeAquivo + "\"");
		response.setHeader("Refresh", "3; url = \"listagens.jsf\""); // AQUI

		servletOutputStream.write(bytes);
		servletOutputStream.flush();
		servletOutputStream.close();
		facesContext.responseComplete();
	}
Criado 31 de outubro de 2014
Ultima resposta 3 de nov. de 2014
Respostas 2
Participantes 2