我有一個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}');' –