【发布时间】:2012-06-16 21:11:36
【问题描述】:
我对 JS、jQuery 和 JSON 的东西还很陌生,因此非常感谢任何帮助。我有一个项目我正在尝试与 Highcharts 合作,那就是 JSF 2.2,RichFaces 4。我已经有了我的支持 bean,它从数据库中提取数据,并将存储放在一个集合中。然后我将集合转换为 GSON 字符串。来自 GSON 对象的打印输出的数据样本是
{"矿池价格":[{"date":"Date.UTC(2012,5,4,1)","data":"1144.144"},{"date":"Date.UTC(2012 ,5,4,2)","数据":"1030.421"}], "RAPP":[{"date":"Date.UTC(2012,5,4,1)","data":"11.50"},{"date":"Date.UTC(2012,5,4, 2)","数据":"10.87"}]}
在页面方面,我从 HighCharts 示例页面中的 JSFiddle 中设计了一个图表,并使用了一些硬编码值来获得正确的外观/设计。
我现在的问题是从支持 bean 获取数据到 highcharts。我现在的页面是这样的
<h:head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="http://code.highcharts.com/stock/highstock.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<script type="text/javascript">
$(document).ready(function() {
function chartdata() {
console.log("Grabbing chart data");
var data = jQuery("#chartvalue").attr('value');
}
});
</script>
</h:head>
<h:body>
<h:form prependId="false" >
<a4j:commandButton value="LoadData" oncomplete="chartdata();" action="#{dailyReportBean.loadChartData}" id="chartvalue_btn" />
<h:inputHidden value="#{dailyReportBean.json}" id="chartvalue" />
<div id="container">
<script src="DR_PoolPrice_Graph.js" type="text/javascript"></script>
</div>
</h:form>
</h:body>
一个带有编码值的预设 JS 文件,可以正常加载。所以问题只是将chartdata()中的数据访问到highcharts文件,以及我如何引用它。
这是 highcharts 文件的样子
$(function() {
Highcharts.setOptions({
colors: ['#FFFFCC','#799ECD',]
});
var chart = new Highcharts.StockChart({
chart: {
renderTo: 'container',
backgroundColor: '#FCD5B5',
borderColor: 'EBBA95',
borderWidth: 2,
borderRadius: 10,
spacingLeft: 40,
spacingRight: 20,
zoomType: 'x',
plotBorderColor: '#346691',
plotBorderWidth: 1,
plotBackgroundColor: {
linearGradient: {
x1: 0,
y1: 0,
x2: 0,
y2: 1
},
stops: [
[0, 'rgb(255, 255, 255)'],
[1, 'rgb(200, 200, 255)']
]
}
},
title: {
text: 'Price'
},
rangeSelector: {
enabled: false
},
yAxis: {
labels: {
x: -25
}
},
legend: {
enabled: true,
floating: false,
align: 'center',
backgroundColor: '#FCFFC5',
borderColor: 'black',
borderWidth: 1,
layout: 'horizontal',
verticalAlign: 'bottom',
y: 0,
shadow: true
},
navigator: {
enabled: false
},
scrollbar: {
enabled: false
},
navigation: {
buttonOptions: {
align: 'right'
}
},
series: [{
name: 'RAPP',
data: rapp,
type: 'area'},
{
name: 'Pool Price',
data: poolprice},
]
});
});
很抱歉,这是一个相当大的帖子,我只是想彻底,因为我尝试了很多不同的方式来查看它,但它只是不适合我。我敢肯定这很愚蠢。
感谢您提供的任何意见!
【问题讨论】:
-
什么是 GSON 字符串? GSON 不是创建 JSON 字符串的 java 库吗?此外,您还有几 (2) 个额外的逗号,IE 会卡住它们。
-
嗨 Kevin,是的,GSON 是一个创建 JSON 字符串的 java 库。由于我们使用的是 Java/JSF,因此使用 GSON 库来生成 JSON 字符串似乎很有意义。很抱歉不清楚这一点。在直播之前,我必须开始清理逗号,但我宁愿让一些东西正常运行,这样我就可以在之后清理它:)
-
我不熟悉 highcharts,但你最初是如何将数据传递给它的?应该没有什么不同。看起来您使用的是
poolprice变量。 -
poolprice 是 GSON 字符串中的一个系列,当我使用硬编码值时,它看起来像 data: ["date":"Date.UTC(2012,5,4, 1)","数据":"1144.144"]
-
看起来你没有在任何地方执行
chartdata,如果它打算在另一个js文件中执行,它需要在全局范围内(没有$(document).ready())在使用它的脚本之前。
标签: jquery jsf richfaces highcharts gson