Relatório não pega o valor passado como parametro

Boa noite a todos, estou com o seguinte problema no relatório, eu tenho a classe ReportUtils, tenho uma jsp com um datatable, em cada linha existe um commandLink para gerar o relatório com aquele argumento , no caso o ID, só que todas vez aparece todos os dados da datatable, o código está da seguinte forma:

ReportUtils.java


   public String ImprimirRel(Object key, Object Value){
                Conn = HibernateUtil.getInstance().getSession().connection();
             
		FacesContext context = FacesContext.getCurrentInstance();
		HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse(); 
		ServletContext servletContext = (ServletContext) context.getExternalContext().getContext(); 
		
		Map param = new HashMap();
                param.put(key,Value);
		//param.put(, this)
		String realPath = servletContext.getRealPath("./" + "relatorios") + "/"; 
		String relatorioJasper = "processo.jasper" ;
		
		try{
		
		JasperPrint print = JasperFillManager.fillReport(realPath + relatorioJasper, param,Conn); 
		response.setContentType("application/pdf");
		byte x1[] = JasperExportManager.exportReportToPdf(print);
		response.getOutputStream().write(x1);
		
		}catch (JRException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}finally{
			conn.close();
		}
		
		FacesContext.getCurrentInstance().responseComplete(); 
		
		return "";
	}

relatorio.jsp

  <rich:dataTable value="#{ProcessoFaces.listOfProcess}" var="proc" rows="20" reRender="ds" id="simpletableproc">
    .
    . 
    .
    <rich:column>
       <h:commandLink value="Gerar relatorio" action="#{ProcessoFaces.gerarRelProcesso()}" >
            <f:setPropertyActionListener target="#{ProcessoFaces.selectedProcesso}" value="#{proc}"/>
        </h:commandLink>
     </rich:column>

ProcessoFaces.java


public void gerarRelProcesso() throws IOException , ClassCastException, NullPointerException{
     try{
           selectedProcesso = processDAO.getProcess(selectedProcesso.getId());
           new ReportsUtil().ImprimirRel(selectedProcesso,selectedProcesso.getId());
         }catch (Exception e){
           JOptionPane.showMessageDialog(null, "Não foi possível gerar relatório");
            e.printStackTrace();
            JOptionPane.showMessageDialog(null, e);
                }
 }

Bom eu tive que fazer algo com ireport só que eu fiz algo mais simples que talvez possa te ajudar segue método abaixo

private String matricula;
	private String CPF;
	private Date dataInicio;
	private Date dataFim;
	 
        //getters e setters

	

	public void imprimeRelatorioAluno() throws IOException, SQLException {

		HashMap parameters = new HashMap();
		JasperPrint rel = null;
		
		try {

			FacesContext facesContext = FacesContext.getCurrentInstance();

			facesContext.responseComplete();

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

			parameters.put("img", scontext.getRealPath("images/asa.png"));
			parameters.put("matricula",getMatricula());
			parameters.put("cpf",getCPF());

			JasperPrint jasperPrint = JasperFillManager.fillReport(
					scontext.getRealPath("rel/REL_ALUNO.jasper"), parameters,
					conexao());		
			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=\"relatorioAluno.pdf\"");

				response.setContentLength(bytes.length);

				ServletOutputStream outputStream = response.getOutputStream();

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

				outputStream.flush();

				outputStream.close();

			}

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

E na página xhtml coloco um campo pra ele digitar esses dados e chamo ele num commandButton espero que de pra ajudar você

Cara, obrigado pela ajuda, mas gerou novamento todos os dados, eu no ireport criei um parametro $P{NP}, no meu código eu preciso informar?

Miguel, sim vc precisará informar o parametro no código sim por exemplo no código que postei nessa linha parameters.put("matricula",getMatricula()); a “matricula” é um parametro no relatorio no seu iria ficar parameters.put("NP",getMatricula()); por exemplo, lembrando que o parametro passado no código tem que ser igual ao do .jrxml