【问题标题】:Why single quotes are escaped by grails' google visualisation plugin?为什么单引号会被 grails 的谷歌可视化插件转义?
【发布时间】:2014-02-23 18:43:27
【问题描述】:

我在一个 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 写入页面时引入的。所以这可能是插件中的一个错误......?

【问题讨论】:

    标签: javascript grails google-visualization


    【解决方案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"
    

    【讨论】:

      【解决方案2】:

      您是否尝试过添加 ';'到你的定义结束??

      像这样:

      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“'”?

      对不起,我帮不上忙,但值得一试。

      祝你好运!

      【讨论】:

        【解决方案3】:

        你试过用双引号代替单引号吗?

        我不熟悉那个插件,但它可能会使用一些基于 java 的库,就像许多插件一样,带有一个薄的 groovyfication 层。

        这看起来像是 javascript 翻译中的错误。如果翻译器最初是以 java 为中心的,他们可能忘记了考虑单引号在 groovy 中分隔字符串。

        【讨论】:

          猜你喜欢
          • 2016-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多