找到解决方案! -------------------------------------------------- -------------------
我做了一些研究,找到了这个问题的答案。
解决方案是使用一些 JSON 库(现在我正在使用 GSON)将 Java 对象转换为 JSON 对象。
新 Gson().toJson(someJavaObj)
返回字符串。只需将字符串作为参数发送,并在客户端使用 js 的 eval 或某些 js 库的函数将其再次转换为 JSON。
实际上,它非常干净和简单。
对不起,我实际上没有发布解决方案。以下是我的解决方案-
支持 bean 中的操作方法 -
public void retrievePieData() {
List<String> categories = new ArrayList<String>();
categories.add("Electronic");
categories.add("Food");
categories.add("Liguor");
categories.add("Stationary");
categories.add("Mechanical");
List<Integer> itemCounts = new ArrayList<Integer>();
itemCounts.add(5);
itemCounts.add(20);
itemCounts.add(1);
itemCounts.add(50);
itemCounts.add(10);
RequestContext reqCtx = RequestContext.getCurrentInstance();
reqCtx.addCallbackParam("categories", new Gson().toJson(categories));
reqCtx.addCallbackParam("itemCounts", new Gson().toJson(itemCounts));
}
视图中的PrimeFaces p:commandButton -
<p:commandLink action="#{pieDataProvider.retrievePieData}" oncomplete="feedPieData(xhr, status, args);" value="Pie chart demo" update="pieData" />
Javascript 函数 -
function feedPieData(xhr, status, args) {
var categories = eval('(' + args.categories + ')');
var itemCounts = eval('(' + args.itemCounts + ')');
options.xAxis.categories = categories;
var series = {
data: []
};
series.name = new Date().toString();
series.data = itemCounts;
options.series = [series];
chart = new Highcharts.Chart(options);
}
我非常感谢并欢迎任何建议或意见。
谢谢!