[RESOLVIDO]Obter o real Caminho arquivo fisico

2 respostas
darksteel3000

Amigos estou desenvolvendo um relatorio para minha aplicação feita em JSF, SPRING e Hibernate.

O que acontece é quando tento pegar o caminho da aplicação para setar o caminho do .jasper ele vem assim

D:\Desenvolvimento\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\site\relatorios\relatContas.jasper

E o que queria era:

D:\Desenvolvimento\workspace\site\relatorios\relatContas.jasper

Estou pegando assim:

FacesContext.getCurrentInstance().getApplication().get getExternalContext().getRealPath("/relatorios")

2 Respostas

robinsonbsilva

Tenta ai:

public void create(List dados, HashMap parameters, String reportName, boolean thereAreSubReports) throws ReportException {

		FacesContext facesContext = FacesContext.getCurrentInstance();
		HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
		InputStream reportStream = facesContext.getExternalContext().getResourceAsStream("/WEB-INF/classes/br/com/renaissance/reports/" + reportName + ".jasper");

		if(thereAreSubReports){
			parameters.put("SUBREPORT_DIR", facesContext.getExternalContext().getRealPath("/WEB-INF/classes/br/com/renaissance/reports/").concat("\\"));
		}

		JRDataSource jrds = new JRBeanCollectionDataSource(dados);

		try {
			ServletOutputStream servletOutputStream = response.getOutputStream();
			response.setContentType("application/pdf");
			facesContext.responseComplete();

			try {
				JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parameters, jrds);
			} catch (JRException e) {
				throw new ReportException(e.getMessage());
			}
			servletOutputStream.flush();
			servletOutputStream.close();
		} catch (IOException e) {
			throw new ReportException(e.getMessage());
		} catch (Exception e) {
			throw new ReportException(e.getMessage());
		}
	}
darksteel3000

Funcionou perfeitamente, me passou despercebido o fato dentro do WEB-INF tinha como chegar no classes.

Muito obrigado !!!

Criado 8 de fevereiro de 2013
Ultima resposta 8 de fev. de 2013
Respostas 2
Participantes 2