【问题标题】:Primefaces:chart doesn't show up on ajax dynamic creationPrimefaces:图表不显示在 ajax 动态创建中
【发布时间】:2015-06-22 09:08:54
【问题描述】:

我有一个图表在更新时没有显示的问题,但如果我刷新页面,它就会显示。

  <p:panel id="main">
      <p:commandbutton action="Somebeckbean"> 
      <p:panel id="something">
           <p:datatable rendered="#{mainController.tableRender}">   
           </p:datatable> 
      </p:panel>
      <p:panel id="keywordsBar">          
          <p:chart  type="bar"  rendered="#{mainController.keywordsBar}"
          model="#{mainController.horizontalBarModel}" style="height:300px;width:100%;" styleClass="center"/>   

      </p:panel>  
 </p:panel>

当我单击按钮时,我会填充数据表和条形图,我将渲染设置为 true 并更新主面板。

我的数据表被渲染并显示,但条形图未显示并渲染到此。

</div>
     <script id="mainForm:j_idt109_s" type="text/javascript">
     $(function(){
         PrimeFaces.cw('Chart','widget_mainForm_j_idt109' {id:'mainForm:j_idt109',type:'bar',data:[[[9,1],[2,2],[2,3],[1,4],[1,5],[1,6],[1,7],[1,8],[1,9],[1,10],[1,11],[1,12],[1,13],[1,14],[1,15]]],title:"Keyword's occurrences",legendPosition:"e",axes:{xaxis: {label:"Occurrences",min:0,max:10,renderer:$.jqplot.LinearAxisRenderer,tickOptions:{angle:"0"}},yaxis: {label:"Keywords",renderer:$.jqplot.CategoryAxisRenderer,tickOptions:{angle:"0"}}},series:[{label:'null'}],ticks:["","Croatia","Zagreb","Accommodations","Attractions","Car Hire","Flights","Hotels","Hrvatska","News","Travel information","Zagreb City News","Zagreb Hotels","cities","city"],orientation:"horizontal",stackSeries:true,datatip:true},'charts');});
    </script>
</div>

我发现这个错误:

未捕获的类型错误:无法读取未定义(匿名函数)@(程序)的属性“LinearAxisRenderer”:1bI.Callbacks.i @

如果我刷新页面,会显示条形图。 谢谢

【问题讨论】:

  • 您在哪里/如何更新数据表和图表组件?
  • 在命令按钮上,我更新了整个主面板。用backbean更新试了一下,结果是一样的。
  • 但是你的图表在keywordsBar面板里面?所以它不会得到更新...
  • 那么一些面板内的数据表是怎么更新的呢?为什么更新条形图后会使用上面问题中显示的代码呈现?如果我刷新显示的页面栏并且没有进行 ajax 调用或更新?我认为更新不是问题,我缺少关于如何创建图表的问题:)
  • 抱歉,您的代码格式看起来好像keywordBar 不在主面板内。我进行了编辑以使其更具可读性。当然更新不是这里的问题,但我很高兴你找到了解决方案:)

标签: primefaces


【解决方案1】:

我找到了解决方案here

这是primefaces官方对这个问题的回应。

只需在页面中添加这些行。

<h:outputScript name="charts/charts.js" library="primefaces" />
<h:outputStylesheet name="charts/charts.css" library="primefaces" />

【讨论】:

  • 下次请在您的问题和 mcve 代码示例中更加具体。您遗漏了代码的重要部分,因此很难看出这是问题所在
猜你喜欢
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多