1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Gerando Relatório PDF - JasperReport

Prezados colegas desenvolvedores, necessito da ajuda de todos para concluir um projeto no qual o mesmo me traga um Relatório de Funções dos Funcionários em PDF, através de um botão especifico.

Para tal situação estou desenvolvendo em Java na IDE Eclipse juntamente ao PrimeFaces e JasperReport integrado.

Segue em detalhes meu Bean e XHTML para Analise, agradeço a atenção:

ListarFuncao.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:sgp="http://sejudh.mt.gov.br/components"
    template="/WEB-INF/pages/_templates/principal.xhtml">

    <ui:define name="conteudo">
        <sgp:validarAcesso permissoes="ListarFuncao" />

        <h3>Função</h3>        

        <h:form>
             <p:commandButton value="Cadastrar Nova" action="#{funcaoBean.cadastrar}" icon="ui-icon-plus" rendered="#{securityUtil.possuiPermissao('CadastrarFuncao')}"/>
        </h:form>

        <h:form id="meuFormulario">        
            <p:panel>
                <p:outputLabel value="Função" />
                <sgp:formInputText id="pesquisar" labelValue="Nome" value="#{funcaoBean.filtro.descricao}" maxlength="80" />

                <sgp:formSelectOneMenu 
                    id="status" labelValue="Status"
                    value="#{funcaoBean.filtro.status}"
                    itemsValue="#{comboHelperBean.status}" 
                    itemValue="#{item}"
                    itemLabel="#{item.descricao}" 
                    temSelecione="true"/>

                <br />
                <br />
                <p:commandButton value="Pesquisar" update=":registrosForm" process="@form" icon="ui-icon-search" />                            
            </p:panel>
        </h:form>

        <h:form id="registrosForm">
                <p:dataTable id="dataTable" var="funcao" value="#{funcaoBean.funcoes}" rows="10" paginator="true" paginatorPosition="bottom" lazy="true" sortBy="#{funcao.id}"
                            emptyMessage="Nenhum registro encontrado.">        
                    <p:column headerText="Código" width="100" sortBy="#{funcao.id}">
                        <h:outputText value="#{funcao.id}" />
                    </p:column>

                    <p:column headerText="Nome" sortBy="#{funcao.nome}">
                        <h:outputText value="#{funcao.nome}" />
                    </p:column>

                    <p:column headerText="Situação" sortBy="#{funcao.status}">
                    <h:outputText value="#{funcao.status.descricao}" />                        
                    </p:column>

                    <p:column headerText="Ações" width="120">
                        <center>
                            <p:commandButton title="Visualizar" icon="ui-icon-document"    action="#{funcaoBean.visualizar(funcao)}" rendered="#{securityUtil.possuiPermissao('VisualizarFuncao')}"/>
                            <p:commandButton title="Alterar" icon="ui-icon-pencil" action="#{funcaoBean.alterar(funcao)}" rendered="#{securityUtil.possuiPermissao('AlterarFuncao')}"/>
                            <p:commandButton action="#{funcaoBean.excluir(funcao)}"    icon="ui-icon-trash" title="Excluir" rendered="#{securityUtil.possuiPermissao('ExcluirFuncao')}" update="@form :registrosForm :mensagens">
                                 <p:confirm header="Confirmação" message="Deseja excluir a função?" icon="ui-icon-alert" />
                            </p:commandButton>
                        </center>
                    </p:column>
                </p:dataTable>

                <p:confirmDialog global="true">
                    <p:commandButton value="Sim" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
                    <p:commandButton value="Não" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
                </p:confirmDialog>
        </h:form>
    </ui:define>
</ui:composition>

FuncaoBean.java

package br.gov.mt.sejudh.sigepen.bean;

import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import org.apache.logging.log4j.Logger;
import org.primefaces.component.datatable.DataTable;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;

import br.gov.mt.sejudh.sigepen.dao.filter.FiltroFuncao;
import br.gov.mt.sejudh.sigepen.enumerator.Acao;
import br.gov.mt.sejudh.sigepen.enumerator.Status;
import br.gov.mt.sejudh.sigepen.model.Funcao;
import br.gov.mt.sejudh.sigepen.service.FuncaoService;
import br.gov.mt.sejudh.sigepen.util.FacesUtil;
import br.gov.mt.sejudh.sigepen.util.LoggerUtil;

import com.ocpsoft.pretty.faces.annotation.URLMapping;
import com.ocpsoft.pretty.faces.annotation.URLMappings;

@ManagedBean
@ViewScoped
@URLMappings(mappings = {
        @URLMapping(id = "funcao", pattern = "/funcao", viewId = "/WEB-INF/pages/funcao/ListarFuncao.xhtml"),
        @URLMapping(id = "59y2k9hgk9gkqa9k", pattern = "/59y2k9hgk9gkqa9k", viewId = "/WEB-INF/pages/funcao/CadastrarFuncao.xhtml") })
public class FuncaoBean extends MetodosDePaginaBean {

    private FiltroFuncao filtro;

    private Funcao funcao;

    private LazyDataModel<Funcao> funcoes;

    @Inject
    private FuncaoService service;

    @Inject
    private FacesUtil facesUtil;

    @Inject
    private Logger log;

    public FuncaoBean() {

    }

    @PostConstruct
    public void init() {
        try {
            this.setFuncao((Funcao) facesUtil.getFlashParameter("funcao"));

            if (this.funcao == null) {
                this.funcao = new Funcao(Status.ATIVO);
            }

            setIsVisualizacao((Boolean) facesUtil
                    .getFlashParameter("isVisualizacao"));

            modificarTituloPaginaCadastro(Funcao.class, this.funcao);

            pesquisar();
        } catch (Exception e) {
            facesUtil.exibirMensagem(FacesMessage.SEVERITY_FATAL, "ERRO",
                    e.getMessage());
            LoggerUtil.logErro(e, log);
            e.printStackTrace();
        }

    }

    public String cadastrar() {
        return "CadastrarFuncao";
    }

    public String salvar() {
        String retorno = null;

        try {
            service.salvar(this.funcao);
            facesUtil.exibirMensagemInfo("Função " + this.funcao.getNome()
                    + " salva com sucesso!");
            retorno = "ListarFuncao";
            LoggerUtil.logInfo(Acao.SALVAR, this.funcao, log);
        } catch (Exception e) {
            facesUtil.exibirMensagem(FacesMessage.SEVERITY_FATAL, "ERRO",
                    "Erro ao salvar função (" + this.funcao.getNome() + "): "
                            + e.getMessage());
            LoggerUtil.logErro(Acao.SALVAR, this.funcao, e, log);
            e.printStackTrace();
        }

        return retorno;
    }

    public void excluir(Funcao funcao) {
        try {
            service.excluir(funcao);
            facesUtil.exibirMensagemInfo("Função " + funcao.getNome()
                    + " excluída com sucesso!");
            LoggerUtil.logInfo(Acao.EXCLUIR, funcao, log);
        } catch (Exception e) {
            facesUtil.exibirMensagem(
                    FacesMessage.SEVERITY_FATAL,
                    "ERRO",
                    "Erro ao excluir função (" + funcao.getNome() + "): "
                            + e.getMessage());
            LoggerUtil.logErro(Acao.EXCLUIR, funcao, e, log);
            e.printStackTrace();
        }
    }

    public String alterar(Funcao funcao) {
        LoggerUtil.logInfo(Acao.ACESSAR, funcao, log);
        facesUtil.setFlashParameter("funcao", funcao);
        return "CadastrarFuncao";
    }

    public String visualizar(Funcao funcao) {
        LoggerUtil.logInfo(Acao.ACESSAR, funcao, log);
        facesUtil.setFlashParameter("funcao", funcao);
        facesUtil.setFlashParameter("isVisualizacao", true);
        return "CadastrarFuncao";
    }

    public void pesquisar() {
        this.setFiltro(new FiltroFuncao());
        this.funcoes = new LazyDataModel<Funcao>() {
            private static final long serialVersionUID = 1L;

            @Override
            public List<Funcao> load(int first, int pageSize, String sortField,
                    SortOrder sortOrder, Map<String, Object> filters) {
                setRowCount(service.quantidadeFiltrados(getFiltro()));

                if (first >= getRowCount()) {
                    first = 0;
                    DataTable dt = (DataTable) FacesContext
                            .getCurrentInstance().getViewRoot()
                            .findComponent("registrosForm:dataTable");
                    dt.setFirst(first);
                }

                getFiltro().organizaFiltro(first, pageSize, sortField,
                        sortOrder);

                return service.buscaPorFiltro(getFiltro());
            }
        };
    }

    public FiltroFuncao getFiltro() {
        return filtro;
    }

    public void setFiltro(FiltroFuncao filtro) {
        this.filtro = filtro;
    }

    public Funcao getFuncao() {
        return funcao;
    }

    public void setFuncao(Funcao funcao) {
        this.funcao = funcao;
    }

    public LazyDataModel<Funcao> getFuncoes() {
        return funcoes;
    }

}
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags ireport eclipse java primefaces pdf jasperreports ou faça a sua própria pergunta.