Fórum Ireport gerando relátorio com chekbox #422711
28/08/2012
0
Estou com uma grande dúvida, antes de gerar o relatório, na pagina xhtml é mostrado uma previa do que será gerado, e nesta pagina tenho um checkbox, conforme código abaixo.
Preciso gerar um relatório que tambem seja mostrado os dados salvo no banco dos checkboxs escolhidos, tentei um subreport mas não estou conseguindo fazer.
CLASSE.
public class RPPoi implements Serializable{
...
private String[] competenciasespecificas;
...
}
CONTROLLER
public class RPPoiController {
...
private Map<String, Object> competenciascomunsItens;
public RPPoiController() {
competenciascomunsItens = new LinkedHashMap<String, Object>();
competenciascomunsItens.put("Orientação para clientes", "ORIENTACAOCLIENTES");
competenciascomunsItens.put("Orientação para mudanças", "ORIENTACAOMUDANCAS");
}
...
//uma pequena parte que gera o relatório.
@SuppressWarnings( { "unchecked" })
public void executarRelatorio(ActionEvent action) throws ParseException, Exception {
List dados = new ArrayList();
Map record = null;
record = new HashMap();
...
record.put("competenciascomuns", rppoi.getCompetenciascomuns());
// adiciona o List dados
dados.add(record);
JRBeanCollectionDataSource fonteDados1 = new JRBeanCollectionDataSource(dados);
...
}
PAGINA.XTHML
<t:selectManyCheckbox style=" width: 676px;" id="competenciascomuns" layoutWidth="3"
disabled="false"
layout="lineDirection"
value="#{rppoiController.rppoi.competenciascomuns}">
<f:selectItems value="#{rppoiController.competenciascomunsItens}"/>
</t:selectManyCheckbox>
Roger Mendes
Curtir tópico
+ 0Posts
28/08/2012
Roger Mendes
estou com uma grande dúvida, antes de gerar o relatório, na pagina xhtml é mostrado uma previa do que será gerado, e nesta pagina tenho um checkbox, conforme código abaixo.
preciso gerar um relatório que tambem seja mostrado os dados salvo no banco dos checkboxs escolhidos, tentei um subreport mas não estou conseguindo fazer.
classe.
public class rppoi implements serializable{
...
private string[] competenciasespecificas;
...
}
controller
public class rppoicontroller {
...
private map<string, object> competenciascomunsitens;
public rppoicontroller() {
competenciascomunsitens = new linkedhashmap<string, object>();
competenciascomunsitens.put("orientação para clientes", "orientacaoclientes");
competenciascomunsitens.put("orientação para mudanças", "orientacaomudancas");
}
...
//uma pequena parte que gera o relatório.
@suppresswarnings( { "unchecked" })
public void executarrelatorio(actionevent action) throws parseexception, exception {
list dados = new arraylist();
map record = null;
record = new hashmap();
...
record.put("competenciascomuns", rppoi.getcompetenciascomuns());
// adiciona o list dados
dados.add(record);
jrbeancollectiondatasource fontedados1 = new jrbeancollectiondatasource(dados);
...
}
pagina.xthml
<t:selectmanycheckbox style=" width: 676px;" id="competenciascomuns" layoutwidth="3"
disabled="false"
layout="linedirection"
value="#{rppoicontroller.rppoi.competenciascomuns}">
<f:selectitems value="#{rppoicontroller.competenciascomunsitens}"/>
</t:selectmanycheckbox>
na classe o correto é competenciascomuns
Gostei + 0
28/08/2012
Davi Costa
att Davi
Gostei + 0
28/08/2012
Roger Mendes
Gostei + 0
29/08/2012
Davi Costa
att Davi
Gostei + 0
29/08/2012
Roger Mendes
Gostei + 0
29/08/2012
Davi Costa
att Davi
Gostei + 0
29/08/2012
Roger Mendes
Gostei + 0
30/08/2012
Davi Costa
Aquele record que vc monta não é o recurso de passagem de parametros do jasper.
att Davi
Gostei + 0
30/08/2012
Roger Mendes
// executa o relatório através de um JRBeanCollectionDataSource em pdf
public static void executarRelatorio1(String caminhoRelatorio, Map<String, Object> parametros, String nomeRel,
JRBeanCollectionDataSource fonteDados) throws ParseException, JRException {
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
// pega o caminho do arquivo .jasper da aplicação
InputStream reportStream = context.getExternalContext().getResourceAsStream(caminhoRelatorio);
response.setHeader("Content-Disposition", "attachment; filename=" + nomeRel + ".pdf");
// response.setContentType("application/download");
response.setContentType("application/pdf");
response.setHeader("Pragma", "no-cache");
try {
ServletOutputStream servletOutputStream = response.getOutputStream();
// envia parametros para o relatório
if (parametros == null) {
parametros = new HashMap<String, Object>();
}
// envia para o navegador o PDF gerado
JasperRunManager.runReportToPdfStream(reportStream, servletOutputStream, parametros, fonteDados);
servletOutputStream.flush();
servletOutputStream.close();
} catch (JRException e) {
e.printStackTrace();
//throw new Exception("Um erro ocorreu quando o relatório estava sendo executado.");
} catch (IOException e) {
e.printStackTrace();
//throw new JRException(ERRO_MENSAGEM_REPORT);
} finally {
context.responseComplete();
}
}
@SuppressWarnings( { "unchecked" })
public void executarRelatorio(ActionEvent action) throws ParseException, Exception {
List dados = new ArrayList();
Map record = null;
record = new HashMap();
// coloca em um Map cada um dos campos criados
// manualmente pelo relatorio
record.put("id",String.valueOf(rppoi.getId()));
record.put("competenciascomuns", rppoi.getCompetenciascomuns());
// adiciona o List dados
dados.add(record);
// cria uma fonte de dados para coleções
JRBeanCollectionDataSource fonteDados1 = new JRBeanCollectionDataSource(dados);
Map<String, Object> parametros1 = new HashMap<String, Object>();
executarRelatorio1("/relatorios/formularioRP.jasper", parametros1,"RP Nº:"+rppoi.getId(), fonteDados1);
}
Gostei + 0
30/08/2012
Davi Costa
Map<String, Object> parametros1 = new HashMap<String, Object>();
Oque vc precisa fazer é criar no jasper o parametro que vc quer receber (vai ter a lisat de tipos que vc pode passar) e depois no java passar esse parametro para o jasper.
No layout do seu relatório vc pode usar esse parâmetro.
Pesquisa um ouco na internet como fazer isso, qualquer dúvida só postar.
att Davi
Gostei + 0
03/09/2012
Roger Mendes
Map<String, Object> parametros1 = new HashMap<String, Object>();
parametros1.put("PARAMETRO_TITULO_RELATORIO","RELATÓRIO DE UNIDADES");
já tentei de várias formas, mas minha array de string, private String[] competenciascomuns;, esta null, e o engraçado é que no formulário ele puxa do banco os checkbox, certinhO tudo que tinha salvo no banco e ainda fica marcado, conforme código baixo.
PAGINA.XHTML
<t:selectManyCheckbox enabledOnUserRole="true" style=" width: 676px;" id="competenciascomuns" layoutWidth="3"
disabled="false"
layout="lineDirection"
value="#{rppoiController.rppoi.competenciascomuns}">
<f:selectItems value="#{rppoiController.competenciascomunsItens}"/>
</t:selectManyCheckbox>
@Controller("rppoiController")
@Scope("session")
public class RPPoiController {
.........
public RPPoiController() {
// mostrar erro por não inicializar
competenciascomunsItens = new LinkedHashMap<String, Object>();
competenciascomunsItens.put("Orientação para o negócio com foco em resultados", "ORIENTACAORESULTADOS");
competenciascomunsItens.put("Orientação para clientes", "ORIENTACAOCLIENTES");
competenciascomunsItens.put("Orientação para mudanças", "ORIENTACAOMUDANCAS");
}
......
}
tentei criando uma variável do tipo String[] teste;
e setei para ele enviar o dados quando clicar no botão gerar pdf, para ver quando dado ele setava ele continua null.
<h:commandButton value="Gerar Poi's" actionListener="#{rppoiController.executarRelatorio}">
<f:setPropertyActionListener target="#{rppoiController.teste}" value="#{rppoiController.rppoi.competenciascomuns}"/>
</h:commandButton>
Gostei + 0
03/09/2012
Davi Costa
att Davi
Gostei + 0
03/09/2012
Roger Mendes
Map<String, Object> parametros1 = new HashMap<String, Object>();
..
parametros1.put("competenciascomuns",rppoi.getCompetenciascomuns());
Mas não consigo testar pois conforme mencionei por ultimo, o array de string esta retornando null, para que eu possa converte-lo para lista e passar o parametros1 ao ireport.
Gostei + 0
03/09/2012
Davi Costa
Pq ai já está null, queria realmente ver o ponto que se perde
att Davi
Gostei + 0
03/09/2012
Davi Costa
att Davi
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)