-2

我正在使用prime faces backing bean 和Chart.js 来绘制图表我在数据表中选择一行。在选择行时更新其中包含图表的画布。我正在获取 Selection 方法的值并构建两个数组,一个用于 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)

我正在从上表中选择一行。在选择时,我想捕获行的 id,获取数据并在同一页面上显示 chart.js 图表

这是我的豆类在豆类

私人字符串汽车ID;

setter 和 getter 方法

public void onRowSelect(SelectEvent event) { Cars car= (Cars) event.getObject();

this.carId  = car.Id ;

}

我将值输入 Primefaces JSON Array 并传递给 JavaScript 。在 JavaScript 中我正在做 JSON.parse 。最初我收到序列化错误,因此将 bean 更改为请求范围问题是我没有将任何值放入 JavaScript 我删除了 JSON 数组,并且只传递了一个字符串我可以在我的代码中提到的 xhtml 页面上获取 bean.property 但是无法进入 JavaScript 我错过了什么吗

4

2 回答 2

0

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

RequestContext.getCurrentInstance().execute("yourJSFunction('" + param1 + "');");

但是,我认为您仍然会错过将您的JSONArray背部转换为JSONJS 中的对象的技巧,您可以执行以下操作:

从 bean 传递时:

function yourJSFunction(coordinatesArray) {
    coordinatesArray = JSON.parse(coordinatesArray);
}

或者当用作 bean 属性时:

var coordinatesArr = JSON.parse('#{yourBean.strProperty}');
于 2018-04-10T08:42:59.933 回答
0

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

例如:

//<![CDATA[
var jsVar = #{managedBean.property}
//]]>
于 2018-04-09T17:53:57.027 回答