我在grails应用中使用Google可视化插件。我正在尝试绘制一个失败的折线图,因为x轴的字符串数据周围的单引号被转义。
在我的gsp页面中,我把:
<gvisualization:apiImport/>
<%
def columns = [['string', 'Date'], ['number', 'Value']]
def chartData = [['20.02.2014', 123], ['21.02.2014', 456]]
%>
<gvisualization:lineCoreChart
elementId="chartView" columns="${columns}" data="${chartData}" width="250" height="200"/>
被翻译成这个(页面的源代码):
<script type="text/javascript">
google.load('visualization', '1', {'packages': ['corechart']});
google.setOnLoadCallback(drawVisualization);
function drawVisualization() {
visualization_data = new google.visualization.DataTable();
visualization_data.addColumn('string', 'Date');
visualization_data.addColumn('number', 'Value');
visualization_data.addRow(['20.02.2014', 123]);
visualization_data.addRow(['21.02.2014', 456]);
visualization = new oogle.visualization.LineChart(document.getElementById('chartView'));
visualization.draw(visualization_data, {width: '250', height: '200'});
}
</script>
我正在使用grails 2.3.5和Google可视化插件0.6.2。我不知道为什么在生成的JS代码中转义单引号。任何提示都表示赞赏!
提前多多感谢!
修改
我调试了插件。数组中的第一个值被正确识别为字符串。然后将值包装成单引号。所以我想当生成的Javascript写入页面时会引入错误。所以它可能是插件中的一个错误......?
答案 0 :(得分:1)
迟了几个月,但对于遇到此问题的其他人来说,事实证明它是Grails 2.3.5及更高版本的默认配置文件。
此处可找到解决方案:Grails 2.3.5 default Config.groovy causes render issues for Google Visualization tags
有问题的行是scriptlet = 'html'
。 security docs描述了如何添加每插件编码或每页编码。
这是每插件编码。只需将其添加到您的Config.groovy中,它就可以在所有页面上运行。
googleVisualization.grails.views.gsp.codecs.scriptlet = "none"
答案 1 :(得分:0)
您是否尝试添加';'到你的定义结束?
像这样:
def columns = [['string', 'Date'], ['number', 'Value']];
def chartData = [['20.02.2014', 123], ['21.02.2014', 456]];
不应该,但这只是一个想法。
我完全不知道,但我会尝试的是:
自行转义引号 - def chartData = [[\'20.02.2014\', 123], ['21.02.2014', 456]];
也许用双打包装你的单引号..“'”20.02.2014“'”?
对不起,我没多大帮助,但值得一试。
祝你好运!答案 2 :(得分:0)
您是否尝试过使用双引号而不是单引号?
我不熟悉该插件,但它可能会使用一些基于java的库,就像许多插件一样,具有很薄的groovyfication层。
它看起来像是javascript翻译中的一个错误。如果翻译者最初是以Java为中心的,他们可能忘记了考虑单引号在groovy中分隔字符串。