我有一个java servlet,它以数组格式将json对象发送到jsp页面。将json数组从servlet获取到javascript变量
这里是我的servlet(它的一部分):
List<HistoryLeavesScalar> returnedPastInfo = SaveDAO.getPastInformation(username);
JSONArray jsonArray = new JSONArray(returnedPastInfo);
String s = jsonArray.toString();
System.out.println("\n\n"+"JSON ARRAY is : "+s);
HttpSession session = request.getSession(true);
session.setAttribute("jsonArray",jsonArray);
this.getServletContext().getRequestDispatcher("/calendar.jsp")
.forward(request, response);
是System.out.print是JSON是这样在我的控制台: [{ “结束日期”:“2017年4月22日“ ”REQ“: ”2017年4月19日“, ”NR“:2, ”类型“: ”CO“, ”的startDate“: ”2017年4月20日“, ”德普“:” 2017年4月19日“},{” 结束日期 “:” 2017年4月22" 日, “REQ”: “2017年4月20日”, “NR”:3, “类型”: “CM”, “的startDate”:“2017-04 -20“,”Dep“:”2017-04-19“}]
这个Json数组我想在JavaScript标记中只能看到这样的格式:(这是calendar.jsp - 它的一部分)
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page import="javax.servlet.jsp.jstl.core.*"%>
<%@ page import="javax.servlet.jsp.el.*" %>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<script type="text/javascript">
var USER_DAYS = [
<c:forEach items="${jsonArray}" var="jsonArray">
{
id: '${jsonArray.nr}',
date: '${jsonArray.req}',
title: '${jsonArray.type}',
startDate: '${jsonArray.startDate',
endDate: '${jsonArray.endDate',
allDay: true,
className: 'done'
}
</c:forEach>
];
</script>
我不知道如何从USER_DAYS变量(javascript)中的servlet中访问来自该json的值。如何把json的值放在id,date,title,startDate,endDate中。
我不知道jstl是否在JavaScript标记中工作。我不知道如何打印这些值(无论它们是什么 - 它可以包含很多信息,全部以这种格式)。
我想提一提的是,如果我将javascript变量变成像这样的东西:它工作得很好。但是这些是我手写的值,但是现在我需要它们的动态...而且这些信息必须来自servlet到calendar.jsp。
var USER_DAYS = [
{
id: 1,
date: '2017-04-05',
title: 'CO',
start: new Date(2017, 3, 5),
end: new Date(2017, 3, 7),
allDay: true,
className: 'done'
},
有人可以帮助我吗?
在JavaScript刚刚尝试这一点。不需要任何JSP标签。直接,我们可以将模型属性分配到我们的js变量中。 var USER_DAYS ='$ {jsonArray}'; – Prasath
为什么不在会话中保存's'并打印?它已经是JSON对象的正确字符串表示形式,不需要创建循环并写入破坏的JSON – BackSlash
尝试使用'var USER_DAYS = JSON.parse('$ {jsonArray}');' –