我正在尝试传输从控制器(到jsp)传递的列表,并将所述列表从jsp传递到javascript。
列表中的数据应该替换X(日期)和y的值
var data = {
values:[
{ X: "8/7/12", Y: 21 },
{ X: "8/8/12", Y: 32 },
{ X: "8/9/12", Y: 62 },
{ X: "8/10/12", Y: 8 },
{ X: "8/11/12", Y: 40 },
{ X: "8/12/12", Y: 12 },
{ X: "8/13/12", Y: 14 },
{ X: "8/14/12", Y: 72 },
{ X: "8/15/12", Y: 11 },
{ X: "8/16/12", Y: 98 },
]};
我希望传递的列表包含以下内容:
1. LocalDate (Jodatime)的字符串版本-用于X轴
2. 分数-对于y轴
我在网上各种论坛上看到并尝试了一些基于情况的解决方案,但没有一个能达到预期的效果。我也试过传递并行数组,但它们似乎都不起作用。
在这种情况下,我倾向于将Java List对象序列化为控制器中的JSON字符串,并将该字符串传递给jsp。假设您的列表包含如下所示的类的实例,
public class MyObject {
protected String X;
protected int Y;
// getters, setters, other methods and fields...
}
你可以使用像Gson或Jackson这样的库来序列化控制器中的列表。
List<MyObject> list = new ArrayList<MyObject>();
// add some objects to the list...
String json = new Gson().toJson(list);
request.setAttribute("values", json);
在jsp中,values
请求属性是一个字符串,表示JSON中的完整javascript对象。
var data = {
values: ${values}
};
您可以简单地从JSP
到Javascript
执行此操作
var data = { values:[
{ X: <%=x[0]%>, Y: <%=y[0]%> },
{ X: <%=x[1]%>, Y: <%=y[1]%> },
...
]};
注意这里我使用数组X和Y的值,您可以在jsp中使用任何数据结构,然后将其放入javascript。
或者,如果你正在从controller
传递数据到jsp
,你可以使用JSTL来迭代数据并将其传递给javascript。