我使用的弹簧回到去简单的字符串:的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对象,并且它也不起作用 –