2013-07-28 2 views
0

Я хочу вернуть JSON из простых в d3 с помощью d3.json, но это ошибка.Ошибки интеграции JSF и ошибки интеграции d3.json

Мой 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"]} 

и d3js код, IM, призывающую в .xhtml файле

<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> 

При печати img в консоли он дает ошибку в firebug. firbug screenshot

+0

Как состояний ошибок, есть ошибка синтаксиса в вашем JSON. {«A»: 10, «B»: 20, «C»: 30 должно быть {«A»: «10», «B»: «20», «C»: «30» –

+0

@ EmilKaminski: Я изменил JSON на это: «{« A »:« 10 »,« B »:« 20 »,« C »:« 30 »,« weekdays »: [« Sun »,« Mon »,« Вт »]} ', но затем также получить это исключение,« отсутствует »после списка аргументов \t d3.json (« {«A»: «10», «B»: «20», «C»: «30», «дни недели» ": [" Sun "," Mon "," Вт "]}", function (... 'в firebug, что-то не так с функцией d3.json или как мне нужно вызывать запрос ajax от d3 до jsf. – maali

+0

Я не эксперт по d3, но из того, что я вижу в документации, является то, что первым параметром метода d3.json является URL-адрес json-файла, а не сам вывод json, например: d3.json ("path/to/file.json", function (error, json) {... –

ответ

0

Вы не вызывать метод таким образом: # {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

+0

Вы не называете GETTER таким образом. Вы можете вызвать метод таким образом, но в этом контексте это не так. Пожалуйста, улучшите свой ответ – Kukeltje

Смежные вопросы