Chart.js - 在JSP页面中添加图例

时间:2015-06-18 09:02:42

标签: javascript jsp chart.js

我有一个圆环图,其代码是用JSP编写的。 现在,我想为它添加一个图例。但legendTemplate中还包含jsp

如何添加?

var myDoughnutChart = new Chart(ctx).Doughnut(data, {legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\" style=\"list-style:none;font-family:HP Simplified;\"><% for (var i=0; i<segments.length; i++){%><li><div style=\"font-size: 12px;\"><div style=\"width:10px;float :left; height:10px;background: <%=segments[i].fillColor%>\"></div><div style=\"padding: 0px 15px;\"><%if(segments[i].label){%><%=segments[i].label%><%}%></div></div></li><%}%></ul>"} );

我收到以下错误:

An error occurred at line: 58 in the jsp file: /WEB-INF/pages/abc/xyz.jsp
name cannot be resolved
55:             
56: 
57:                 var ctx = document.getElementById("assetStatus").getContext("2d");
58:                 var myDoughnutChart = new Chart(ctx).Doughnut(data, {legendTemplate: "

legendTemplate对应的值必须是String。如何逃避jsp内容?

1 个答案:

答案 0 :(得分:0)

您可以先在服务器端脚本块中构建legendTemplate

String serverSideLegendTemplate = "<ul class=\"";
serverSideLegendTemplate += name.toLowerCase();
serverSideLegendTemplate += "-legend\" style=\"list-style:none;font-family:HP Simplified;\">";

for (var i=0; i<segments.length; i++) {
...

然后只需打印legendTemplate

即可
myDoughnutChart = new Chart(ctx).Doughnut(data, {
     legendTemplate: "<%=serverSideLegendTemplate%>"
});

这样可以更清楚,更容易地找出无法解析变量的原因(您可以在单独的范围内定义它)。