我使用的彈簧回到去簡單的字符串:的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);
因爲它的治療您的陣列作爲'string'! –
要將該字符串更改爲數組,請使用'eval'(很少推薦)或'JSON.parse'。後者將要求你首先執行'.replace(/'/ g,''')',因爲它使用JSON的錯誤引號。 –
但是它需要是字符串,否則javascript不會識別它。據我所知,裏面的'addRows'函數必須是字符串,我試過返回一個stringbuilder對象,並且它也不起作用 –