【问题标题】:JSF primefaces and d3.json integration errorJSF primefaces 和 d3.json 集成错误
【发布时间】:2015-12-28 22:45:18
【问题描述】:

我想在 d3.json 的帮助下从 primefaces 返回一个 JSON 到 d3,但它会抛出错误。

我的 primefaces 豆子,

@ManagedBean
@SessionScoped
public class JsonBean implements Serializable {

private static final long serialVersionUID = 1L;

JsonExample jse=new JsonExample();


public void prepareChartDate() {

    RequestContext reqCtx = RequestContext.getCurrentInstance();
    reqCtx.addCallbackParam("chartData",jse.createJson());
}
}

jse.createJson() 将json作为

{"A":10,"B":20,"C":30,"weekdays":["Sun","Mon","Tues"]}

我在 .xhtml 文件中调用的 d3js 代码是

<script src="http://d3js.org/d3.v3.js"></script>

<script>
var data;
d3.json("#{jsonBean.prepareChartDate()}",function(error, json) {
  if (error) return console.warn(error);
  data = json;
  console.log(data);
  //console.log("hello");

});

</script>

当我在控制台中打印时,萤火虫会出错。

【问题讨论】:

  • 与错误状态一样,您的 JSON 中存在语法错误。 {"A":10,"B":20,"C":30 应该是 {"A":"10","B":"20","C":"30"
  • @EmilKaminski :我将 JSON 更改为 this,{"A":"10","B":"20","C":"30","weekdays":["Sun","Mon","Tues"]},但后来我也收到了这个异常,missing ) after argument list d3.json("{"A":"10","B":"20","C":"30","weekdays":["Sun","Mon","Tues"]}",function(... 在萤火虫中,d3.json 函数有什么问题或者我需要如何调用从 d3 到 jsf 的 ajax 请求。
  • 我不是 d3 方面的专家,但从我在文档中可以看到,d3.json 方法的第一个参数是 json 文件的 url,而不是 json 输出本身,比如:d3.json("path/to/file.json", function(error, json) {...
  • @EmilKaminski 谢谢,我实际上在 xhtml 中遇到了 JSF 语法问题,我可以从 d3.json 函数调用 servlet 但是,#{jsonBean.prepareChartDate()} 这给了我错误。我们可以混合JSF 中的 servlet?如果是,你能提供任何链接或建议吗?
  • 这是一个链接,有人将 json 数据粘贴到 highchart 中,也许它可以提供帮助:stackoverflow.com/questions/16414903/…

标签: json jsf primefaces d3.js


【解决方案1】:

您不要以这种方式调用方法:#{jsonBean.prepareChartDate()}。 你必须像这样创建一个类:

@ManagedBean
@SessionScoped
public class JsonBean implements Serializable {
  private static final long serialVersionUID = 1L;
  public String getChartDate() {
    String jsonData;
    /* jsonData valorization */
    return jsonData;
  }
}

并使用 #{jsonBean.chartDate}

调用该方法

【讨论】:

  • 您不会以这种方式调用 GETTER。您可以这样调用方法,但在这种情况下它不是正确的方法。请改进您的答案
猜你喜欢
  • 2012-07-21
  • 2016-01-11
  • 2013-01-30
  • 2023-03-04
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
相关资源
最近更新 更多