Primefaces 如何在Ajax调用中使用chart.js将数组从支持bean传递到JavaScript以绘制图表

Primefaces 如何在Ajax调用中使用chart.js将数组从支持bean传递到JavaScript以绘制图表,primefaces,datatable,chart.js,javabeans,backing,Primefaces,Datatable,Chart.js,Javabeans,Backing,我正在使用prime faces和Chart.js绘制图表 我正在数据表中选择一行。选择行时,更新包含图表的画布。我正在获取选择方法的值,并构建两个数组,一个用于X轴,另一个用于y轴。如何将这些数组传递给JavaScript以呈现图表。我尝试将Prime faces JSON数组传递给JavaScript。我无法获得JavaScrip中的值 这是我的示例代码.xhtml代码 <p:dataTable id="myTbl" var="cars" value="#{bean.valu

我正在使用prime faces和Chart.js绘制图表 我正在数据表中选择一行。选择行时,更新包含图表的画布。我正在获取选择方法的值,并构建两个数组,一个用于X轴,另一个用于y轴。如何将这些数组传递给JavaScript以呈现图表。我尝试将Prime faces JSON数组传递给JavaScript。我无法获得JavaScrip中的值

这是我的示例代码.xhtml代码

    <p:dataTable id="myTbl" var="cars"  value="#{bean.value}"  rowKey="#{bean.carId}"  selection="#{bean.selectedCar}" selectionMode="single"  reflow="true" >            
           <p:ajax event="rowSelect" listener="#{bean.onRowSelect}" update=":chartForm"  oncomplete="drawChart();" /> 
   </p:dataTable>   




          <div class= "chart-container" > 
         <h:outputText id="outputid" value="#{bean.carId}" />              
         <canvas id="myChart"  ></canvas>     


         </div> 




 function drawChart(){   

   var carId = '#{bean.carId}';  

   alert (carId)
}

我将值输入PrimeFacesJSON数组并传递到JavaScript中。最初我遇到序列化错误,所以将bean更改为请求范围 问题是我没有在JavaScript中输入任何值 我删除了JSON数组,只传递了一个字符串 我可以在xhtml页面上获得代码中提到的bean.property,但无法进入JavaScript
我是否遗漏了什么

您可以尝试在javascript代码中使用jsf表达式语言

例如:

//<![CDATA[
var jsVar = #{managedBean.property}
//]]>

好的,如果您关心从bean调用和传递JS函数的值,那么您可以调用RequestContext.getCurrentInstance的execute来直接从bean调用脚本方法,如下所示:

RequestContext.getCurrentInstance().execute("yourJSFunction('" + param1 + "');");
但是,我认为您仍然缺少将JSONArray转换回JS中JSON对象的技巧,您可以按照以下操作:

RequestContext.getCurrentInstance().execute("yourJSFunction('" + param1 + "');");
从bean传递时:

或者当用作bean属性时:


分享你的研究成果对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请参见:可能与的重复,或者您应该在onRowSelect的末尾使用RequestContext.getCurrentInstance.executedrawChart'+carId+';;使用bean中的JSONArray字符串调用drawChart;;。在使用EL的脚本中直接使用bean属性的技巧在您更新脚本部分时也会起作用。您能展示您的答案的工作演示吗?@titббббббб,我尝试了上面的代码并获得了undefined@JasperdeVries,我可以通过您提供的链接从ManagedBean通过java脚本调用。我的问题是我可以从PageSubmit中获取bean.property,但不能通过AJAX callI获取。我正在尝试上面提到的所有解决方案,但仍然无法将值获取到java脚本中。也许我会进一步阐述
function yourJSFunction(coordinatesArray) {
    coordinatesArray = JSON.parse(coordinatesArray);
}
var coordinatesArr = JSON.parse('#{yourBean.strProperty}');