【发布时间】:2013-07-24 18:14:08
【问题描述】:
我正在尝试使用 JavaScript 中的 JSTL forEach 标记遍历对象列表(一些测量数据),并使用 Google Charts API 显示数据。代码如下所示。但看起来有些不对劲。当我仔细检查时,测量对象列表中的数据可以很好地传递给${listOfMeasurements}、${measurements.measTime}、${measurements.measS1raw} 和${measurements.measS2raw} 中的html。但是在 javascript 块中,forEach 代码无法按预期执行data.addRow()。我的猜测是,我没有在我的 javascript 代码中正确使用 forEach,所以 data.addRow() 没有按预期执行。我该如何解决?
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Date');
data.addColumn('number', 'measurement1');
data.addColumn('number', 'measurement2');
<c:forEach items="${listOfMeasurements}" var="measurements">
"data.addRow("
+"${measurements.measTime}"+","
+"${measurements.measS1raw}"+","
+"${measurements.measS2raw}"+");"
;
</c:forEach>
var options = {
title: 'Measurements'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
【问题讨论】:
-
在 for 中不带引号试试。在
forEach眼中data.addRow(...)它已经只是一些字符串。 -
您需要意识到JSP 是一个HTML 代码生成器,而JS 是HTML 的一部分。在浏览器中打开 JSP 页面,右键单击并查看源代码。仔细查看 JSP 生成的 HTML/JS 代码语法。没关系?如果没有,只需相应地修复 JSP 代码,以便它准确生成所需的 HTML/JS 代码输出。如果仍然无效,请复制粘贴该 HTML 输出而不是 JSP 源代码,并在 HTML 上下文而不是 JSP 上下文中重新构建问题。
-
检查 HTML 源代码非常有帮助。 @BalusC,感谢您的建议。
标签: javascript jsp jstl