2017-04-10 71 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) –