gpt4 book ai didi

callback - 如何使用 PrimeFaces 的 RequestContext 将 POJO 作为回调参数发送?

转载 作者:行者123 更新时间:2023-12-04 15:03:46 26 4
gpt4 key购买 nike

我可以发送回调参数,只要我只发送一些像 String 这样的原始类型,它就可以完美地工作。但即使是最简单的 POJO,同样的事情也行不通。 PrimeFaces 指南说 RequestContext.addCallbackParam() 方法可以处理 POJO 并将它们转换为 JSON。我不知道为什么它在我的情况下不起作用。

有没有人这样做过?

最佳答案

找到解决方案! -------------------------------------------------- -------------------

我做了一些研究,找到了这个问题的答案。

解决方案是使用一些 JSON 库(现在我使用 GSON)将 Java 对象转换为 JSON 对象。

new 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));
}

View 中的 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);
}

我真的很感激并欢迎任何建议或意见。
谢谢!

关于callback - 如何使用 PrimeFaces 的 RequestContext 将 POJO 作为回调参数发送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6032877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com