Boa tarde, tudo bem?
pessoal acabei de receber um erro e n tenho idéia de como arrumá-lo, alguém pode me ajudar?:
SEVERE: Error Rendering View[/restrito/acao.xhtml]
java.lang.ClassCastException: java.util.ArrayList cannot be cast to org.primefaces.model.chart.PieChartModel
Essa lista é chamada aqui:
<ui:composition>
<h:panelGrid width="100%">
<h:form id="graficosCarteira">
<h:panelGrid columns="2" width="100%">
<p:panel header="Composição carteira em % de quantidade"
toggleable="true" toggleSpeed="500">
<p:pieChart value="#{acaoBean.lista}" var="acaoVirtual"
categoryField="#{acaoVirtual.acao.sigla}"
dataField="#{acaoVirtual.acao.quantidade}" width="265px"
height="125px" style="estiloGrafico" />
</p:panel>
<p:panel header="Composição carteira em % de valor"
toggleable="true" toggleSpeed="500" style="margin-left:+10px;">
<p:pieChart value="#{acaoBean.lista}" var="acaoVirtual"
categoryField="#{acaoVirtual.acao.sigla}"
dataField="#{acaoVirtual.total}" width="265px" height="125px"
style="estiloGrafico" />
</p:panel>
</h:panelGrid>
</h:form>
</h:panelGrid>
</ui:composition>
E o metodo que ele chama é esse:
public List<AcaoVirtual> getLista() {
FacesContext context = FacesContext.getCurrentInstance();
ContextoBean contextoBean = ContextoUtil.getContextoBean();
AcaoRN acaoRN = new AcaoRN();
try {
if (this.lista == null) {
this.lista = acaoRN.listarAcaoVirtual(contextoBean.getUsuarioLogado());
}
} catch (RNException e) {
context.addMessage(null, new FacesMessage(e.getMessage()));
}
return this.lista;
}
Alguém tem idéia do que possa estar faltando? ou sobrando?
Miuto obrigado.
Alguem sabe como resolver este problema ? Estou com este mesmo problema e não ideia de como resolver isto Obrigado a todos.
Tive este problema ao alterar a biblioteca Primefaces do 2.2 para 4.0. A forma de trabalhar com PieChart foi modificada, pois o mesmo não aceita mais um List e sim um objeto PieChartModel
O Código Java:
private PieChartModel pieChartGraficoPorQuantidade;
private PieChartModel pieChartGraficoPorValor;
public PieChartModel getPieChartGraficoPorQuantidade() {
pieChartGraficoPorQuantidade = new PieChartModel();
pieChartGraficoPorValor = new PieChartModel();
listaAcaoVirtual = new ArrayList<AcaoVirtual>();
FacesContext context = FacesContext.getCurrentInstance();
ContextoBean contextoBean = ContextoUtil.getContextoBean();
AcaoRN acaoRN = new AcaoRN();
try {
this.listaAcaoVirtual = acaoRN.listarAcaoVirtual(contextoBean
.getUsuarioLogado());
for (AcaoVirtual acao : listaAcaoVirtual) {
pieChartGraficoPorQuantidade.set(acao.getAcao().getSigla(), acao.getAcao().getQuantidade());
}
} catch (Exception e) {
e.printStackTrace();
}
return pieChartGraficoPorQuantidade;
}
public PieChartModel getPieChartGraficoPorValor() {
pieChartGraficoPorValor = new PieChartModel();
listaAcaoVirtual = new ArrayList<AcaoVirtual>();
FacesContext context = FacesContext.getCurrentInstance();
ContextoBean contextoBean = ContextoUtil.getContextoBean();
AcaoRN acaoRN = new AcaoRN();
try {
this.listaAcaoVirtual = acaoRN.listarAcaoVirtual(contextoBean
.getUsuarioLogado());
for (AcaoVirtual acao : listaAcaoVirtual) {
pieChartGraficoPorValor.set(acao.getAcao().getSigla(), acao.getUltimoPreco());
}
} catch (Exception e) {
e.printStackTrace();
}
return pieChartGraficoPorValor;
}
O codigo xhtml
<ui:composition>
<h:panelGrid width="100%">
<h:form id="graficosCarteira">
<h:panelGrid columns="2" width="100%">
<p:panel header="Composição carteira em % de quantidade"
toggleable="true" toggleSpeed="500">
<p:pieChart value="#{acaoBean.pieChartGraficoPorQuantidade}" legendPosition="w" showDataLabels="true"
width="265px" height="125px" style="estiloGrafico" />
</p:panel>
<p:panel header="Composição carteira em % de valor"
toggleable="true" toggleSpeed="500" style="margin-left:+10px;">
<p:pieChart value="#{acaoBean.pieChartGraficoPorValor}" legendPosition="w" showDataLabels="true"
width="265px" height="125px" style="estiloGrafico" />
</p:panel>
</h:panelGrid>
</h:form>
</h:panelGrid>
</ui:composition>