【发布时间】:2019-06-28 07:30:54
【问题描述】:
我希望我的问题类似于this question,但不幸的是,答案对我不起作用。
<p:chart type="bar" model="#{lasDashboardBean.barModel}" style="height:350px">
<p:ajax event="itemSelect" listener="#{lasDashboardBean.itemSelect}" update="machineInfoTable" />
</p:chart>
LasDashboardBean.java
@Named(value = "lasDashboardBean")
@Dependent
public class LasDashboardBean {
private BarChartModel barModel;
private DashboardController dashboardDbController;
@PostConstruct
public void init() {
try {
dashboardDbController = new DashboardController();
} catch (NamingException ex) {
Logger.getLogger(LasDashboardBean.class.getName()).log(Level.SEVERE, null, ex);
}
createBarModel();
}
private void createBarModel() {
barModel = initBarModel();
barModel.setTitle("Machine Menufacturers Count");
barModel.setLegendPosition("ne");
Axis xAxis = barModel.getAxis(AxisType.X);
xAxis.setTickAngle(90);
Axis yAxis = barModel.getAxis(AxisType.Y);
yAxis.setLabel("Count");
yAxis.setMin(0);
}
private BarChartModel initBarModel() {
BarChartModel model = new BarChartModel();
ChartSeries manufacturersMachines = new ChartSeries();
manufacturersMachines.setLabel("Machines");
try {
manufacturersMachineCount = dashboardDbController.getManufacturersMachinesCount();
manufacturersMachineCount.stream().forEach((mc) -> {
manufacturersMachines.set(mc.getManufacturerName(), mc.getCount());
});
model.addSeries(manufacturersMachines);
} catch (SQLException ex) {
Logger.getLogger(LasDashboardBean.class.getName()).log(Level.SEVERE, null, ex);
}
return model;
}
错误日志:
java.lang.NullPointerException 在 org.primefaces.component.chart.renderer.BarRenderer.encodeData(BarRenderer.java:35) 在 org.primefaces.component.chart.renderer.BasePlotRenderer.render(BasePlotRenderer.java:29) 在 org.primefaces.component.chart.ChartRenderer.encodeScript(ChartRenderer.java:95) 在 org.primefaces.component.chart.ChartRenderer.encodeEnd(ChartRenderer.java:68) 在 javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:949) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1912) 在 org.primefaces.component.panelgrid.PanelGridRenderer.encodeGridBody(PanelGridRenderer.java:244) 在 org.primefaces.component.panelgrid.PanelGridRenderer.encodeGridLayout(PanelGridRenderer.java:90) 在 org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:40) 在 javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:949) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1912) 在 javax.faces.render.Renderer.encodeChildren(Renderer.java:176) 在 javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:918) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1905) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1908) 在 javax.faces.component.UIComponent.encodeAll(UIComponent.java:1908) 在 com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:491) 在 com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:194) 在 javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:151) 在 javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:151) 在 com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:126) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) 在 com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:223) 在 javax.faces.webapp.FacesServlet.service(FacesServlet.java:671) 在 org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1580) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:338) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) 在 org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) 在 org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) 在 org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 在 org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) 在 org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) 在 org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) 在 org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 在 org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) 在 org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) 在 org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) 在 org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 在 org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:652) 在 org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:591) 在 com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) 在 org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238) 在 com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:463) 在 com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:168) 在 org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) 在 org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) 在 org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:242) 在 org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133) 在 org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112) 在 org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 在 org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:539) 在 org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 在 org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593) 在 org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573) 在 java.lang.Thread.run(Thread.java:748)
【问题讨论】:
-
您的 bean 中缺少用于 barModel 的 setter() 和 getter()。
-
@Melloware 他们存在,只是没有在代码中提及。
-
啊,请始终向像我这样的帮助者提供完整的示例,看起来您的 bean 不符合 bean 标准,当然不会工作。请为其他人更新。
-
另外,它可能不喜欢@Dependent 范围,您尝试过 RequestScoped 或 ViewScoped 吗?
-
不仅仅是一个“完整”的例子,一个minimal reproducible example
标签: jsf primefaces jsf-2.2