如何使用PrimeFaces在tabView中呈现图表

时间:2011-10-05 11:33:22

标签: java charts jsf-2 tabs primefaces

我需要在某种状态页面上显示很多图表。图表应分组在tabViewaccordionPanel中。此设置适用于 PrimeFaces 2.2.1 。由于新版本的某些功能(并且因为图表不再是 Flash ),我正在尝试迁移到 PrimeFaces 3 (目前为3.0.M3)。< / p>

<p:tabView>  
  <p:tab title="One">  
    <p:pieChart value="#{myBean.myChartOne}" />
  </p:tab>
  <p:tab title="Two">  
    <p:pieChart value="#{myBean.myChartTwo}" />
  </p:tab>
</p:tabView>

使用PrimeFaces 3时,图表不会显示。有一个bug report描述了这个问题,并说明3.0 M4中的图表应该有延迟加载。

更新

我现在使用PrimeFaces 3.0 M4快照和延迟加载图表。它看起来像这样:

<p:tabView>  
      <p:tab>
        <p:accordionPanel>  
            <p:tab title="All time">  
                <p:commandButton value="load chart" type="button" onclick="onTimeChartAll.init(); buttonOnTimeChartAll.disable();"
                    widgetVar="buttonOnTimeChartAll"/>
                <p:pieChart value="#{myBean.onTimeChartAll}" lazy="true" 
                    widgetVar="onTimeChartAll" />
            </p:tab>
            <p:tab title="30 Days">  
                <p:commandButton value="load chart" type="button" onclick="onTimeChart30Days.init();buttonOnTimeChart30Days.disable();"
                    widgetVar="buttonOnTimeChart30Days"/>
                <p:pieChart value="#{myBean.onTimeChart30Days}" lazy="true" widgetVar="onTimeChart30Days" />
            </p:tab>
        </p:accordionPanel>
    </p:tab>
    [...] <!-- and so on -->
</p:tabView>

我可以打开一个标签,然后点击按钮加载图表。现在我想找到一个解决方案,在打开选项卡时自动加载图表。打开选项卡时是否有自动加载图表的解决方案?对于p:accordionPanelp:tabView,有onTabShow属性,但我认为我需要p:tab。或者是否可以通过widgetVaronTabShow处理当前打开的标签的var

1 个答案:

答案 0 :(得分:1)

primefaces项目负责人刚写了blog post说这应该在3.0.M4中修复:

  

我们很高兴分享即将推出的PrimeFaces 3.0.M4有一个通用的解决方案,所以在页面上你不需要处理这些,因为PrimeFaces为你处理这些。