events: [
{
title: 'All Day Event',
start: new Date(2010,2,13)
},
{
title: 'Long Event',
start: new Date(y, m, d-5),
end: new Date(y, m, d-2)
}
]
如何从数据库中获取数据后在JSP中创建此数组?
答案 0 :(得分:0)
你的问题很模糊,但一般来说最简单的事情是将你的数据作为Bean或Map绑定到请求中作为属性或其他东西;这取决于你正在使用什么框架。完成后,只需通过JSTL EL表达式引用字段:
events: [
<c:forEach var='event' items='${myData.events}'>
{ title: '${event.title}', start: new Date(${event.timestamp}) },
</c:forEach>
null
];
尾随的“null”是为IE添加内容;你也可以编写循环来避免逗号尾随逗号。
在我的应用程序中,我总是编写一个“jsQuote”EL函数,它为Javascript字符串常量语法执行类似于“fn:escapeXml”的操作。将事件标题之类的东西直接转储到Javascript源代码中是危险的,但是标准JSP库中没有函数可以为Javascript执行字符串转义。然而,写一个很容易。因此在我的代码中,该行看起来像这样:
{title: '${xyz:jsQuote(event.title)}', start: new Date(${event.timestamp}) },
如果您的数据中包含“长”或“长”,则无需担心“时间戳”。
同样,所有这些完全取决于您的数据。
答案 1 :(得分:0)
创建一个看起来像这样的Javabean类Event
public class Event {
private String title;
private Date start;
private Date end;
// Add/generate getters and setters.
}
创建Servlet
,使用Google Gson将其转换为JSON。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOexception {
List<Event> events = eventDAO.list();
String json = new Gson().toJson(events);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
将其映射到url-pattern
,例如/jsonGetEvents
。
在jQuery中使用$.getJSON
函数:
$.getJSON('jsonGetEvents', function(events) {
// `events` is a JSON string. Do your thing with it. This examples loops over it.
$.each(events, function(index, event) {
var title = event.title;
var start = event.start;
var end = event.end;
});
});