2017-04-10 68 views
0

我使用的弹簧回到去简单的字符串:的JavaScript将错撇号

[['09:41',5,2.63],['09:49',6,2.63]] 

我的Java脚本768,16用此字符串来填充一个谷歌的折线图:

data.addRows([['09:41',5,2.63],['09:49',6,2.63]]); 

的一段代码上面的工作正常,但是当我尝试用变量替换硬代码时,一个简单的撇号出现在蓝色之外。

/*<![CDATA[*/ 
     var test = [[${chartValues}]]; 
     data.addRows(test); 
/*]]>*/ 

问题是,当我在Eclipse控制台这个chartValues值打印输出,它正确地显示:

[['09:41',5,2.63],['09:49',6,2.63]] 

当我尝试这个结果保存在变量test等传递给addRows功能作为thymeleaf论证,结果是:

data.addRows('[[\'09:41\',5,2.63]]'); 

我不知道为什么这个撇号(之间第二[

我的Java类,建立这个字符串:

import java.util.ArrayList; 

import br.com.carboni.utils.FileHandle; 


public class BuildCsv { 

    public static String buildArray() throws Exception { 

     String path = Configuracao.path_monitora_disco; 
     String currentDate = DateFormat.FormatDate(); 
     String filename = currentDate + Configuracao.filename; 


     ArrayList<String> chartValues = FileHandle.readFileAsListOfStrings(path, filename); 

     StringBuilder sb = new StringBuilder();             

     for (String s : chartValues) { 

      String hr = s.split(";")[0]; 
      String qtFiles = s.split(";")[1]; 
      String totalSize = s.split(";")[2].replaceAll(",", "."); 

      sb.append("['"); 
      sb.append(hr); 
      sb.append("',"); 
      sb.append(qtFiles); 
      sb.append(","); 
      sb.append(totalSize); 
      sb.append("],"); 

     } 

     sb.deleteCharAt(sb.length()-1); 

     return sb.toString(); 

    } 

} 

编辑:

我可以解决这个问题。实际上,我需要的只是接收一个字符串并将其转换为一个JavaScript数组对象。

我用@Scott Sauyet建议使用eval。

所以我改变了我的控制器发送一个像这样的字符串['string1', int2, int3],['string1', int2, int3]

在我的javascript所有我需要做的:

/*<![CDATA[*/ 
    var arr= eval("[" + [[${chartValues}]] + "]"); 
/*]]>*/ 

等:

data.addRows(arr);

+1

因为它的治疗您的阵列作为'string'! –

+0

要将该字符串更改为数组,请使用'eval'(很少推荐)或'JSON.parse'。后者将要求你首先执行'.replace(/'/ g,''')',因为它使用JSON的错误引号。 –

+0

但是它需要是字符串,否则javascript不会识别它。据我所知,里面的'addRows'函数必须是字符串,我试过返回一个stringbuilder对象,并且它也不起作用 –

回答

0

似乎有在

var data = [[${chartValues}]]; 
data.addRows(data); 

一个错误它看起来像数据变量正在使用两次

然而,尝试了这一点:

data.addRows([[${chartValues}]]); 

干杯

+0

对不起。错字错误。实际上,var数据是var test。 –

+0

一旦thymeleaf不理解该语法,'$ {chartValues}'将不起作用。它必须是这样的:'[[$ {chartValues}]]'。 [官方文档](http://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#script-inlining-javascript-and-dart) –