Gente, tô usando JSF2.1.2 + Primefaces2.2.1
Sou iniciante no Primefaces, comecei a mexer tem pouco tempo, tenho muita dificuldade ainda…
O problema dessa vez é com o DataExport, para gerar arquivos xls e pdf. Dei uma pesquisada aqui no fórum, e não achei nenhum tópico que resolvesse o meu problema. =x
Bom…Fiz como no showcase do primefaces, o código é esse:
Pessoa.java
package model;
public class Pessoa {
public String nome;
public String cpf;
public String rg;
public Pessoa(){
}
public Pessoa(String nome, String cpf, String rg) {
super();
this.nome = nome;
this.cpf = cpf;
this.rg = rg;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public String getRg() {
return rg;
}
public void setRg(String rg) {
this.rg = rg;
}
}
PessoaController.java
package controller;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import model.Pessoa;
@ManagedBean
@SessionScoped
public class PessoaController {
private List<Pessoa> pessoas = new ArrayList<Pessoa>();
public PessoaController(){
pessoas.add(new Pessoa("Luciana", "23534649x", "45723948573"));
}
public List<Pessoa> getPessoas(){
return pessoas;
}
public void setPessoas(List<Pessoa> pessoas){
this.pessoas = pessoas;
}
}
exemplo.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<title>Exemplo</title>
</h:head>
<h:body>
<h:form>
<p:fieldset toggleable="false" style="font-size:13px; width:60%">
<h3>Gerar Relatório</h3>
<h:commandLink>
<p:graphicImage styleClass="estilo"
value="/imagens/icones/excel.png" />
<p:dataExporter type="xls" target="tabelaPessoas" fileName="Pessoas" />
</h:commandLink>
<h:commandLink>
<p:graphicImage styleClass="estilo" value="/imagens/icones/pdf.png" />
<p:dataExporter type="pdf" target="tabelaPessoas" fileName="Pessoas" />
</h:commandLink>
</p:fieldset>
<p:dataTable id="tabelaPessoas" var="pessoa"
value="#{pessoaController.pessoas}" paginator="true" rows="10"
style="font-size:13px">
<f:facet name="header">Pessoas</f:facet>
<p:column sortBy="#{pessoa.nome}">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{pessoa.nome}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="CPF" />
</f:facet>
<h:outputText value="#{pessoa.cpf}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="RG" />
</f:facet>
<h:outputText value="#{pessoa.rg}" />
</p:column>
</p:dataTable>
</h:form>
</h:body>
</html>
Quando clico no ícone pra gerar o arquivo xls, aparece o seguinte erro:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: org/apache/poi/hssf/usermodel/HSSFWorkbook
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
root cause
java.lang.NoClassDefFoundError: org/apache/poi/hssf/usermodel/HSSFWorkbook
org.primefaces.component.export.ExcelExporter.export(ExcelExporter.java:38)
org.primefaces.component.export.DataExporter.processAction(DataExporter.java:94)
javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
javax.faces.component.UICommand.broadcast(UICommand.java:300)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
root cause
java.lang.ClassNotFoundException: org.apache.poi.hssf.usermodel.HSSFWorkbook
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
org.primefaces.component.export.ExcelExporter.export(ExcelExporter.java:38)
org.primefaces.component.export.DataExporter.processAction(DataExporter.java:94)
javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
javax.faces.component.UICommand.broadcast(UICommand.java:300)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.12 logs.
--------------------------------------------------------------------------------
Apache Tomcat/7.0.12
Eeee, quando clico no ícone pra gerar o arquivo pdf, aparece o seguinte:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: com/lowagie/text/Phrase
javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
root cause
java.lang.NoClassDefFoundError: com/lowagie/text/Phrase
org.primefaces.component.export.ExporterFactory.getExporterForType(ExporterFactory.java:24)
org.primefaces.component.export.DataExporter.processAction(DataExporter.java:86)
javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
javax.faces.component.UICommand.broadcast(UICommand.java:300)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
root cause
java.lang.ClassNotFoundException: com.lowagie.text.Phrase
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
org.primefaces.component.export.ExporterFactory.getExporterForType(ExporterFactory.java:24)
org.primefaces.component.export.DataExporter.processAction(DataExporter.java:86)
javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
javax.faces.component.UICommand.broadcast(UICommand.java:300)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.12 logs.
--------------------------------------------------------------------------------
Apache Tomcat/7.0.12
Não sei mesmo como usar esse componente, tenho apanhado muito com o Primefaces. Com esse componente tem sido mais difícil, não acho material pra ajudar. =x
Se alguem pudesse me ajudar, dar uma luz aqui… seria ótimo!
Obrigada desde já!!
[]'s