Tenho que fazer alguns relatórios no meu sistema e decidi usau o
Ireport.
Apanhei feio pra tentar fazer uma conexão EJBQL, coloquei no
*classpath* do Ireport o .jar da minha app e o diretório que contém
meus beans e o persistence.xml e mesmo assim não houve conexão. Tentei
com 2 versões do Ireport (3.0.0 e 3.7.1) e finalmente desisti.
Pesquisando, vi que posso usar outra abordagem, com o
JRBeanCollectionDataSource, entendi que devo enviar uma lista para o
Ireport, mas não entendi direito como o Ireport enxerga essa lista.
Minhas dúvidas:
1 - Devo criar um relatório com datasource vazio?
2 - Caso utilize um relatório com conexão vazia, como o Ireport vai
entender que "determinado campo Text Field do Ireport = atributo da
classe"?
3 - Enviar a lista *clients = em.createQuery("select c from Client
c").getResultList()* já funcionaria ou teria que iterar e utilizar um
add() em outra lista?
4 - Qual o melhor local dentro da app. para deixar os arquivos do
relatório?
Valeu pessoal !!
--
http://groups.google.com/group/javasf
You received this message because you are subscribed to the Google
Groups "javasf: JavaServer Faces Group" group.
To post to this group, send email to jav...@googlegroups.com
To unsubscribe from this group, send email to javasf+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
Procurei no google sim, só recorro à lista quando o resultado da busca
é insatisfatório, talvez por não saber como procurar, talvez porque os
exemplos não focam em explicar detalhadamente.
Valeu!
On 23 mar, 13:10, thiago moraes <thiagoa...@gmail.com> wrote:
> ds = new JRBeanCollectionDataSource(lista de beans);
> JasperFillManager.fillReport(pathRelativo, parametros, ds);
>
> Eu tenho um package dos relatorios.
>
> Sugiro que você procure um pouco mais no google que achará um exemplo legal
> :)
>
> 2010/3/23 Samer <samer.ja...@gmail.com>
Samer, tenta procurar então uma video aula de ireport que deve ficar mais claro para você.
--
http://groups.google.com/group/javasf
You received this message because you are subscribed to the Google
Groups "javasf: JavaServer Faces Group" group.
To post to this group, send email to jav...@googlegroups.com
To unsubscribe from this group, send email to javasf+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
lista de beans);)
Mas acho que to fazendo merda na hora de adicionar as classes no
classpath do Ireport, não tá lendo a classe quando tento carregar os
atributos.
Tentei apontar para meu diretório entity (que fica em src\main\org
\domain\minhaApp\entity) e nada...
Tentei exportar para .jar esse mesmo entity e adicionar no classpath e
nada também, o Ireport diz que a classe não está no classpath!!
O que estou fazendo de errado?
Valeu por enquanto!!
On 23 mar, 13:51, thiago moraes <thiagoa...@gmail.com> wrote:
> Então você deverá fazer a sua query.
>
> Clique no botao de query e
>
> 1 Selecione JavaBeanDataSource.
>
> 2 Coloque o nome da sua classe que será passada como parametro dentro da
> lista (ds = new JRBeanCollectionDataSource(
>
>
>
> > lista de beans);)
>
> 3 Selecione os campos a mostrar no relatorio.
>
> 4 finalize
>
> 5 dentro do detail band coloque os campos listados.
>
> 6 adicione o JRBean datasource da maneira como te mostrei anteriormente.
>
> e teste
>
> 2010/3/23 thiago moraes <thiagoa...@gmail.com>
>
> --
> Thiago Alves de Moraes
To unsubscribe from this group, send email to javasf+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
On 23 mar, 15:13, thiago moraes <thiagoa...@gmail.com> wrote:
> Adiciona no classpath ... fecha e abre o iReport. Acho que vai funfar :)
>
> 2010/3/23 Samer <samer.ja...@gmail.com>
public
class DadosServidorRelatorioMBean { private String saida; private DadosServidorDaoImpl dao = new DadosServidorDaoImpl(); private DadosServidor dadosServidor = new DadosServidor(); private CargoComissionado cargoComissionado = new CargoComissionado(); public String getSaida() { return saida;}
public void setSaida(String saida) { this.saida = saida;}
/** * @return the cargoComissionado */ public CargoComissionado getCargoComissionado() { return cargoComissionado;}
/** * @param cargoComissionado * the cargoComissionado to set */ public void setCargoComissionado(CargoComissionado cargoComissionado) { this.cargoComissionado = cargoComissionado;}
@SuppressWarnings("unused") public String gerarRelatorioCargoComissionadoPdf() throws IOException,JRException {
JasperReport report = (JasperReport) JRLoader
.loadObject(getDiretorioReal(
"/relatorios/cargoComissionado.jasper"));HashMap<String, Object> map =
new HashMap<String, Object>();DadosServidor dadosServidorAux =
new DadosServidor();dadosServidorAux.getCargoComissionado().setDsSimbolo(
dadosServidor.getCargoComissionado().getDsSimbolo());List<DadosServidor> lista =
dao.gerarRelatorioPdf(dadosServidorAux.getCargoComissionado().getDsSimbolo());
JRBeanCollectionDataSource ds =
new JRBeanCollectionDataSource(lista);JasperPrint jp = JasperFillManager.fillReport(report,
null, ds);preenchePdf(jp);
/** byte[] bytes = JasperExportManager.exportReportToPdf(jp);
*
* HttpServletResponse response = (HttpServletResponse)
* FacesContext.getCurrentInstance().getExternalContext().getResponse();
*
* response.setContentType("application/pdf");
* response.setHeader("Content-disposition", "attachment;filename=" +
* report.getName() + ".pdf"); response.getOutputStream().write(bytes);
*/
// FacesContext.getCurrentInstance().responseComplete(); return "cargoComissionadoRelatorio";}
/** * Método para preencher o PDF do relatório * * @param print * JasperPrint * @throws JRException */ private void preenchePdf(JasperPrint print) throws JRException { // Pego o caminho completo do PDF desde a raiz saida = getDiretorioReal("/pdf/cargoComissionado.pdf"); // Exporto para PDFJasperExportManager.exportReportToPdfFile(print,
saida); /** Jogo na variável saída o nome da aplicação mais o caminho para o PDF.
* Essa variável será utilizada pela view
*/
saida = getContextPath() + "/pdf/cargoComissionado.pdf";}
/** * Método para retornar o caminho completo do diretório onde se encontra o * arquivo 'jasper' e o arquivo 'pdf' * * @param diretorio * String diretório a ser localizado na aplicação * @return String caminho completo */ private String getDiretorioReal(String diretorio) {HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(
false); return session.getServletContext().getRealPath(diretorio);}
/** * Método para retornar o nome da aplicação * * @return String nome da aplicacao */ private String getContextPath() {HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(
false); return session.getServletContext().getContextPath();}
}
tenta isso que da certo.--
http://groups.google.com/group/javasf
You received this message because you are subscribed to the Google
Groups "javasf: JavaServer Faces Group" group.
To post to this group, send email to jav...@googlegroups.com
To unsubscribe from this group, send email to javasf+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
To unsubscribe from this group, send email to javasf+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
Obrigado pela explicação!
On 23 mar, 15:53, rondinelle pessoa <rondinellepes...@gmail.com>
wrote:
> Qual o framework tu tá usando pra mapeamento objeto relacional?
>
To unsubscribe from this group, send email to javasf+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
On 23 mar, 16:12, rondinelle pessoa <rondinellepes...@gmail.com>
wrote:
> Beleza cara, é o hibernate, toplink, eclipselink ou´um outro?
>
To unsubscribe from this group, send email to javasf+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
Vou tentar me virar agora com os exemplos, agradeço a todos a ajuda!
Abraços
On 23 mar, 16:48, rondinelle pessoa <rondinellepes...@gmail.com>
wrote:
> Cara tu tem que passar uma lista com os objetos e jogar o resultado da lista
> dentro do JRBeanCollectionDataSource como tá na classe que te passei. Dá
> algum erro quando tu faz isso? Caso de me passa pra eu da uma olhada.
>
--
http://groups.google.com/group/javasf
You received this message because you are subscribed to the Google
Groups "javasf: JavaServer Faces Group" group.
To post to this group, send email to jav...@googlegroups.com
To unsubscribe from this group, send email to javasf+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
public void generateReport() throws JRException, IOException {
String reportPath = ("/WEB-INF/relatorios/report1.jasper");
FacesContext facesContext = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext)
facesContext.getExternalContext().getContext();
String pathRel = servletContext.getRealPath(reportPath);
HttpServletResponse response = (HttpServletResponse)
facesContext.getExternalContext().getResponse();
ServletOutputStream outputStream = response.getOutputStream();
clients = clientDAO.listClientDAO();
JRBeanCollectionDataSource ds = new
JRBeanCollectionDataSource(clients);
try {
JasperPrint print = JasperFillManager.fillReport(pathRel, null, ds);
ByteArrayOutputStream output = new ByteArrayOutputStream();
JasperExportManager.exportReportToPdfStream(print, output);
response.setContentType("application/pdf");
response.addHeader("Content-
Disposition","attachment;filename=report1.pdf");
response.setContentLength(output.size());
outputStream.write(output.toByteArray(), 0, output.size());
outputStream.flush();
outputStream.close();
facesContext.responseComplete();
} catch (JRException e) {
System.out.println(e.getMessage());
}
}
Pra chamar o método no JSF, tem que usar o <h:commandButton
action="#{bean.generateReport}" />
Não esquecer de colocar o jar iText-2.1.0 no seu projeto.