Nullpointer at inital load of PieChart

UI Components for JSF
Post Reply
fenix4life
Posts: 7
Joined: 09 Aug 2010, 10:11

09 Aug 2010, 10:19

Hello,

While changing our charts from Jfreechart to the primefaces piechart we are having some issues to make it work the first time.
While implemented the piechart at first sight like the example we can not seem to make it work at the first call.
When accessing the page for the first time we always receive a Nullpointerexception. If the page is then refreshed the PieChart is being correctly rendered.
I've checked our code and even at the first generation the List is being filled in so that doesn't seem to be the problem.

Any thoughts on whet the issue might be.
I've already tried a couple of thing like eg: filling the List in the constructor in stead of the get method,... but they all seem the result in the same issue

Exception,

Code: Select all

java.lang.NullPointerException
	at org.primefaces.component.chart.pie.PieChartRenderer.encodeLocalData(PieChartRenderer.java:99)
	at org.primefaces.component.chart.pie.PieChartRenderer.encodeScript(PieChartRenderer.java:49)
	at org.primefaces.component.chart.BaseChartRenderer.encodeEnd(BaseChartRenderer.java:54)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:281)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:279)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.richfaces.renderkit.TabRendererBase.encodeChildren(TabRendererBase.java:113)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277)
	at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258)
	at org.richfaces.renderkit.html.TabPanelRenderer.doEncodeChildren(TabPanelRenderer.java:266)
	at org.richfaces.renderkit.html.TabPanelRenderer.doEncodeChildren(TabPanelRenderer.java:261)
	at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:72)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:60)
	at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:201)
	at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:133)
	at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:69)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:76)
	at org.primefaces.component.dashboard.DashboardRenderer.encodeMarkup(DashboardRenderer.java:100)
	at org.primefaces.component.dashboard.DashboardRenderer.encodeEnd(DashboardRenderer.java:79)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:861)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:937)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at org.apache.myfaces.custom.ppr.PPRLifecycleWrapper.render(PPRLifecycleWrapper.java:84)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at be.sofico.web.frmwrk.application.ResponseHeaderFilter.doFilter(ResponseHeaderFilter.java:38)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at be.sofico.web.frmwrk.application.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:29)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Unknown Source)
Faces-config

Code: Select all

  <managed-bean>
  <managed-bean-name>chart</managed-bean-name>
  <managed-bean-class>be.sofico.web.mgbean.dashboard.Chart</managed-bean-class>
  <managed-bean-scope>session</managed-bean-scope>
 </managed-bean>
Bean

Code: Select all

private List<Chart> chartFuelType;

public Dashboard(){
fillFuelTypes();
}

private void fillFuelTypes() throws MWSException {
		chartFuelType = new ArrayList<Chart>();

		MWSGenericMapList ft = getFuelTypes();

		for (int i = 0; i < ft.size(); i++) {
			Double value = Double.parseDouble(ft.get(i).get("counter").toString());
			chartFuelType.add(new Chart(ft.get(i).get("fueltype").toString(), value.intValue()));
		}
	}

Code: Select all

public class Chart {
	private static final long serialVersionUID = 6941226397386362479L;
	private String xvalue;
	private int yvalue;

	public Chart() {
	}

	public Chart(String xvalue, int yvalue) {
		this.xvalue = xvalue;
		this.yvalue = yvalue;
	}
}

Code: Select all

public class Chart {
	private static final long serialVersionUID = 6941226397386362479L;
	private String xvalue;
	private int yvalue;

	public Chart() {
	}

	public Chart(String xvalue, int yvalue) {
		this.xvalue = xvalue;
		this.yvalue = yvalue;
	}
Eclipse Galileo v3.5.0
tomcat-6.0.20
JSF 1.2_14
primefaces-1.0.2.jar
richfaces-api-3.3.2.SR1.jar
richfaces-impl-3.3.2.SR1.jar
richfaces-ui-3.3.2.SR1.jar
tomahawk12-1.1.9.jar

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

09 Aug 2010, 10:53


fenix4life
Posts: 7
Joined: 09 Aug 2010, 10:11

09 Aug 2010, 11:51

I knew I forgot something :-)

Please find below the environment details.
I presume not all are useful but I've added them anyway.

Eclipse Galileo v3.5.0
tomcat-6.0.20
JSF 1.2_14
primefaces-1.0.2.jar
richfaces-api-3.3.2.SR1.jar
richfaces-impl-3.3.2.SR1.jar
richfaces-ui-3.3.2.SR1.jar
tomahawk12-1.1.9.jar

If I'm missing any please let me know.

Regards,
Eclipse Galileo v3.5.0
tomcat-6.0.20
JSF 1.2_14
primefaces-1.0.2.jar
richfaces-api-3.3.2.SR1.jar
richfaces-impl-3.3.2.SR1.jar
richfaces-ui-3.3.2.SR1.jar
tomahawk12-1.1.9.jar

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

09 Aug 2010, 12:15

Here is PieChartRenderer of legacy 1.0.2;

http://code.google.com/p/primefaces/sou ... derer.java

Line 99 indicates an issue with category field. Can you check if all your categories are not null. Also can you post the p:pieChart code as well?

fenix4life
Posts: 7
Joined: 09 Aug 2010, 10:11

09 Aug 2010, 14:11

Hello;

Thx with the response.
I'll go through the code with the debugger again to see if I can find any differences between the first call and the seconds call to the webpage related to the category field.

In meantime I've added the latest part of the puzzle which I forgot.

Code: Select all

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view 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"
	>
	

	
<ui:composition>
<f:subview id="qfueltypes">
<p:resources/>


	<h3>${msg.portal_fueltypes}</h3>

        <script type="text/javascript">
            var chartStyle = {
                padding:20,
                legend: {
                    display:"right",
                    spacing:10
                }
            };
        </script>

	
	<p:pieChart value="#{dashboard.graphFuelTypesFreeCharts}" live="false" styleClass="chart" style="chartStyle" width="200" var="chart" categoryField="#{chart.xvalue}" dataField="#{chart.yvalue}">
	</p:pieChart>
</f:subview>
</ui:composition>
</f:view>
Eclipse Galileo v3.5.0
tomcat-6.0.20
JSF 1.2_14
primefaces-1.0.2.jar
richfaces-api-3.3.2.SR1.jar
richfaces-impl-3.3.2.SR1.jar
richfaces-ui-3.3.2.SR1.jar
tomahawk12-1.1.9.jar

fenix4life
Posts: 7
Joined: 09 Aug 2010, 10:11

09 Aug 2010, 15:47

Found the issue.
I was a bit to quick in the copy past of some example.
the name of the bean was identical to the var defined in the piechart tag.
This caused it to retrieve some data from a newly created chart object.

Regards
Eclipse Galileo v3.5.0
tomcat-6.0.20
JSF 1.2_14
primefaces-1.0.2.jar
richfaces-api-3.3.2.SR1.jar
richfaces-impl-3.3.2.SR1.jar
richfaces-ui-3.3.2.SR1.jar
tomahawk12-1.1.9.jar

cagatay.civici
Prime
Posts: 18616
Joined: 05 Jan 2009, 00:21
Location: Cybertron
Contact:

09 Aug 2010, 18:46

Glad it works now!

Post Reply

Return to “PrimeFaces”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 14 guests