我使用spring返回de simple string:
[['09:41',5,2.63],['09:49',6,2.63]]
我的java脚本应该使用此字符串填充google折线图:
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
函数作为百万美元参数时,结果为:
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);
答案 0 :(得分:0)
似乎有错误
var data = [[${chartValues}]];
data.addRows(data);
看起来数据变量正在使用两次。
尽管如此,试试这个:
data.addRows([[${chartValues}]]);
干杯