我试图让primefaces条形图工作但是我收到以下错误:
java.lang.ClassCastException: java.util.Vector cannot be cast to org.primefaces.model.chart.CartesianChartModel
WARNING: StandardWrapperValve[Faces Servlet]: Servlet.service() for servlet Faces Servlet threw exception
java.lang.ClassCastException: java.util.Vector cannot be cast to org.primefaces.model.chart.CartesianChartModel
at org.primefaces.component.chart.bar.BarChartRenderer.encodeData(BarChartRenderer.java:127)
at org.primefaces.component.chart.bar.BarChartRenderer.encodeScript(BarChartRenderer.java:51)
at org.primefaces.component.chart.bar.BarChartRenderer.encodeEnd(BarChartRenderer.java:36)
这是代码:
<p:barChart id="basic" value="#{markingBean.studentsMarks}" legendPosition="ne"
title="Basic Bar Chart" min="0" max="200" style="height:300px"/>
从执行数据库查询的辅助bean中检索studentsMarks
studentsMarks = markingFacade.getMarksForStudent(markToEdit);
和db查询获取我需要的13个标记:
public List getMarksForStudent(Marking id) {
System.out.println("In getMarksForStudent");
System.out.println("id = " + id);
System.out.println("id = " + id.getId());
Query m = em.createQuery("SELECT m.markSectionOne, m.markSectionTwo, m.markSectionThree, m.markSectionFour, m.markSectionFive, m.markSectionSix, m.markSectionSeven, m.markSectionEight, m.markSectionNine, m.markSectionTen, m.markSectionEleven, m.markSectionTwelve, m.markSectionThirteen FROM MARKING m WHERE m.id = :id", Double.class);
m.setParameter("id", id.getId()); // Note the getId()
System.out.println(m);
return m.getResultList();
}
导致错误的原因以及如何解决?
谢谢你们:)
答案 0 :(得分:1)
感谢明确的问题!
<p:barChart
需要org.primefaces.model.chart.CartesianChartModel
值。您指定List
类型,因此jvm将显示java.lang.ClassCastException
例外。
请参阅以下链接,然后按照以下链接: