【发布时间】:2018-10-20 12:28:14
【问题描述】:
对 JSF 来说是全新的,但我了解生命周期。我正在使用 JSF 2.2,Primefaces 6.1。我在一个名为 bDashboard.xhtml 的 xhtml 页面中单独创建了一个布局。直接调用时工作正常。但是当我通过<ui:include src="/bDashboard.xhtml" /> 将它包含在不同的页面中时,图表不会呈现。这是仪表板文件:
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a="http://xmlns.jcp.org/jsf"
xmlns:p="http://primefaces.org/ui"
xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
xmlns:ct="http://www.chartistjsf.org/charts"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h3>My Dashboard</h3>
<p:panelGrid columns="2" layout="grid">
<p:panel>
<p:chart type="pie" model="#{pieChartBean.pieModel1}"
style="display:block;margin-right:auto;margin-left:auto;" />
</p:panel>
<p:panel>
<p:chart type="pie" model="#{pieChartBean.pieModel2}" visible="true"
style="display:block;margin-right:auto;margin-left:auto;" />
</p:panel>
</p:panelGrid>
</ui:composition>
上面的文件被包含在内:
<h:form id="buyerDashForm">
<ui:include src="/bDashboard.xhtml" />
</h:form>
饼图托管 Bean:
@ManagedBean
@SessionScoped
public class PieChartBean {
private PieChartModel pieModel1;
private PieChartModel pieModel2;
@PostConstruct
public void init() {
createPieModels();
}
public PieChartModel getPieModel1() {
return pieModel1;
}
public PieChartModel getPieModel2() {
return pieModel2;
}
private void createPieModels() {
createPieModel1();
createPieModel2();
}
private void createPieModel1() {
pieModel1 = new PieChartModel();
pieModel1.set("Kajaria Builders", 540);
pieModel1.set("Bajaj Constructions", 325);
pieModel1.set("Sentinel Builders", 702);
pieModel1.set("Regency Towers", 421);
pieModel1.setTitle("Savings By Project");
pieModel1.setLegendPosition("w");
pieModel1.setShadow(false);
}
private void createPieModel2() {
pieModel2 = new PieChartModel();
pieModel2.set("Kajaria Builders", 50);
pieModel2.set("Bajaj Constructions", 35);
pieModel2.set("Sentinel Builders", 72);
pieModel2.set("Regency Towers", 41);
pieModel2.setTitle("Savings By Spend Category");
pieModel2.setLegendPosition("e");
pieModel2.setShowDataLabels(true);
pieModel2.setShadow(false);
}
页面渲染时我没有收到任何错误。
【问题讨论】:
-
嗨,有几件事,首先总是尝试创建一个minimal reproducible example 以缩小您的问题范围,让我们更容易阅读。其次,不要在包含的文件中添加
<h:body>,第三你有嵌套的表单。第二个可能与您的问题有关 -
嗨@Kukeltje,我已经删除了所有无关的标签并将面板网格移动到
,但问题仍然存在。我在上面编辑了我的代码。还删除了所有表格。 -
拜托,那里的代码还是太多了。或者,如果您删除任何剩余的标签,它是否真的有效?请了解minimal reproducible example
-
我已经删除了所有的杂物……但似乎有问题。
-
也没有客户端(javascript)错误?并删除 panelgrid 使其工作?那么图表的风格呢?可以去掉吗?
标签: jsf charts primefaces render