为什么单引号被grails的google可视化插件转义?

时间:2014-02-23 18:43:27

标签: javascript grails google-visualization

我在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([&#39;20.02.2014&#39;, 123]);      
        visualization_data.addRow([&#39;21.02.2014&#39;, 456]);

        visualization = new  oogle.visualization.LineChart(document.getElementById('chartView'));

        visualization.draw(visualization_data, {width: &#39;250&#39;, height: &#39;200&#39;});   
    }
 </script>

我正在使用grails 2.3.5和Google可视化插件0.6.2。我不知道为什么在生成的JS代码中转义单引号。任何提示都表示赞赏!

提前多多感谢!

修改

我调试了插件。数组中的第一个值被正确识别为字符串。然后将值包装成单引号。所以我想当生成的Javascript写入页面时会引入错误。所以它可能是插件中的一个错误......?

3 个答案:

答案 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中分隔字符串。