Ich habe ein Java-Servlet, das ein JSON-Objekt an eine JSP-Seite in einem Javascript Variabile mit Array-Format sendet.Das JSON-Array von Servlet zu Javascript-Variable
Hier ist mein Servlet (ein Teil davon):
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);
die System.out.print JSON so etwas in meiner Konsole ist: [{ "endDate": "2017.04.22 "," req ":" 2017-04-19 "," nr ": 2," type ":" CO "," startDate ":" 2017-04-20 "," Dep ":" 2017-04-19 "}, {" endDate ":" 2017-04-22 "," req ":" 2017-04-20 "," nr ": 3," Typ ":" CM "," startDate ":" 2017-04 -20 "," Dep ":" 2017-04-19 "}]
Diese JSON-Array möchte ich in JavaScript-Tag so in diesem Format nur sichtbar sein: (Dies ist calendar.jsp - ein Teil davon)
<%@ 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>
Ich weiß nicht, wie auf die Werte von diesem JSON zugreifen, die von dem Servlet in USER_DAYS Variable (Javascript) kommt. Wie man die Werte von json in ID, Datum, Titel, startDate, endDate setzt.
Ich weiß nicht, ob jstl in einem Javascript-Tag funktioniert. Ich weiß nicht, wie ich diese Werte drucken soll (was auch immer sie sind - sie können viele Informationen enthalten, alle in diesem Format).
Ich möchte erwähnen, dass, wenn ich die Javascript-Variable in etwas so ändern: es funktioniert gut. Aber das sind Werte, die ich handgeschrieben habe, aber jetzt möchte ich sie dynamisch ... und diese Informationen müssen von Servlet in calendar.jsp kommen.
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'
},
Kann mir jemand helfen?
Genau dies versuchen. Keine Notwendigkeit für JSP-Tags. Direkt können wir unseren js-Variablen ein Modellattribut zuweisen. var USER_DAYS = '$ {jsonArray}'; – Prasath
Warum speichern Sie nicht 's' in der Sitzung und drucken es? Es ist bereits eine korrekte Zeichenfolgendarstellung des JSON-Objekts, keine Notwendigkeit Schleifen zu erstellen und gebrochen JSON – BackSlash
Versuchen Sie mit 'var USER_DAYS = JSON.parse ('$ {jsonArray}');' –