Duvidas iReport

Fala galera, sou novato em java e estou tentando gerar um relatorio com iReport.
Aqui no forum achei um post q fez o mesmo gerar sem problemas porem ao gerar o mesmo só é liberado para download e com o nome null.pdf
Gostaria que o relatorio aparecesse no navegador e com um nome qualquer diferente de nulo.
Estou utilizando jsf + primefaces, segue meu codigo abaixo:

meu xhtml

[code] <h:form id=“form”>

		<p:panel id="grade" header="Dados Grade">
			<p:messages id="msgsGrade" />
			<h:panelGrid id="esc" columns="3">

				<h:outputLabel for="sala" value="Sala: *" />
				<p:selectOneMenu id="sala" value="#{imprimeCartBean.sala}"
					required="true" requiredMessage="Campo Sala é obrigatório"
					style="width:150px;">
					<f:selectItem itemLabel="Selecione uma sala" itemValue="" />
					<f:selectItems value="#{imprimeCartBean.lstSala}" />
				</p:selectOneMenu>
				<p:message for="sala" display="icon" />

			</h:panelGrid>
			<p:separator />
			<div align="right">
				<p:commandButton rendered="true" id="exportar1" value="Exportar"
					ajax="false">
					<p:fileDownload
						value="#{imprimeCartBean.sampleReportPDF}" />
				</p:commandButton>
			</div>
		</p:panel>
	</h:form>[/code]

meu Bean

[code] public ImprimeCartBean() {

	try {
		boolean ver = Uteis.VerificaSessao();

		if (ver == true) {
			Configuracao conf = RetornaSessaoConfiguracao();// retorna a
															// sessao
															// de
															// configuracao
			Map<String, String>lstSalaSordem = ControleFactory.getInstance().getSalaControle()
					.carregaSalascombo(conf.getConf_ano());
			
			lstSala = Uteis.sortByComparator(lstSalaSordem);
		}
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

}

public Configuracao RetornaSessaoConfiguracao() {
	// Retorna a configuracao da sessão
	HttpServletRequest request = (HttpServletRequest) FacesContext
			.getCurrentInstance().getExternalContext().getRequest();
	HttpSession session = request.getSession();
	return (Configuracao) session.getAttribute("configuracao");
}

public StreamedContent getSampleReportPDF() {

	InputStream relatorio = null;

	try {

		ByteArrayOutputStream out = new ByteArrayOutputStream();

		InputStream stream = ((ServletContext) FacesContext
				.getCurrentInstance().getExternalContext().getContext())
				.getResourceAsStream("/WEB-INF/cart.jasper");

		List<Aluno> listaAlunos = new ArrayList<Aluno>();

		listaAlunos = ControleFactory.getInstance().getAlunoscontrole()
				.listaAlunosPcart(2013, Integer.parseInt(sala));

		JRBeanCollectionDataSource datasource = new JRBeanCollectionDataSource(
				listaAlunos);
		HashMap<String, Object> params = new HashMap<String, Object>();
		JasperPrint print = JasperFillManager.fillReport(stream, params,
				datasource);

		JRExporter exporter = new net.sf.jasperreports.engine.export.JRPdfExporter();

		exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
		exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);
		exporter.exportReport();

		relatorio = new ByteArrayInputStream(out.toByteArray());

	} catch (JRException ex) {
		Logger.getLogger(ImprimeCartBean.class.getName()).log(Level.SEVERE,
				null, ex);
	}

	return new DefaultStreamedContent(relatorio);
}

public void imprimeRelatorio() throws IOException, SQLException {

	List<Aluno> listaAlunos = new ArrayList<Aluno>();

	listaAlunos = ControleFactory.getInstance().getAlunoscontrole()
			.listaTodos(2013);

	JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(
			listaAlunos);

	@SuppressWarnings("rawtypes")
	HashMap parameters = new HashMap();

	try {

		FacesContext facesContext = FacesContext.getCurrentInstance();

		facesContext.responseComplete();

		ServletContext scontext = (ServletContext) facesContext
				.getExternalContext().getContext();

		@SuppressWarnings("unchecked")
		JasperPrint jasperPrint = JasperFillManager.fillReport(
				scontext.getRealPath("/WEB-INF/cart.jasper"), parameters,
				ds);

		ByteArrayOutputStream baos = new ByteArrayOutputStream();

		JRPdfExporter exporter = new JRPdfExporter();

		exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);

		exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, baos);

		exporter.exportReport();

		byte[] bytes = baos.toByteArray();

		if (bytes != null && bytes.length > 0) {

			HttpServletResponse response = (HttpServletResponse) facesContext
					.getExternalContext().getResponse();

			response.setContentType("application/pdf");

			response.setHeader("Content-disposition",
					"inline; filename=\"relatorioPorData.pdf\"");

			response.setContentLength(bytes.length);

			ServletOutputStream outputStream = response.getOutputStream();

			outputStream.write(bytes, 0, bytes.length);

			outputStream.flush();

			outputStream.close();

		}

	} catch (Exception e) {

		e.printStackTrace();

	}

}[/code]

Tenho mais uma duvida mais fica para o proximo post … vlwww

tenta exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, “nome_diferente_de_null_aqui”);