从 servlet 获取 json 数组到 javascript 变量
Getting the json array from servlet to javascript variable
我有一个 java servlet,它使用数组格式将 json 对象发送到 jsp 页面 java 脚本变量。
这是我的 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 在我的控制台中是这样的:
[{"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,"type":"CM","startDate":"2017-04-20","Dep":"2017 -04-19"}]
我希望此 Json 数组在 java 脚本标记中仅以该格式可见:(这是 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 变量(java脚本)中来自 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'
},
有人可以帮助我吗?
您已经拥有它作为字符串:
String s = jsonArray.toString();
在会话中存储 s
而不是 jsonArray
;
session.setAttribute("jsonArray", s);
并在 servlet 中打印:
var USER_DAYS = ${jsonArray};
我的测试
Java servlet(带有示例数据):
bingo.jsp
:
HTML 结果:
渲染结果:
有效。
你可以这样写
<script>
var DAYS = '${jsonArray}';
if(DAYS.length > 0 ){
var USER_DAYS = {
id: DAYS[0].nr,
date: DAYS[0].req,
title: DAYS[0].type,
startDate: new Date(DAYS[0].startDate),
endDate: new Date(DAYS[0].endDate),
allDay: true,
className: 'done'
};
}
</script>
您可以将 jsonString
解析为 javascript JSON
对象。然后您想更改 json
对象的一些对象键,再删除一个额外的键 [e.g "Dep":"2017-04-19"]
,最后想在最终的 json 对象中添加两个带有值的键。
allDay: true,
className: 'done'
这里是 solution.set 数据作为 json 字符串。
session.setAttribute("jsonArray",jsonArray.toString());
在你的jsp
var USER_DAYS = JSON.parse('${jsonArray}');
这将创建一个名为 USER_DAYS
的 JSON
对象。
最后修改你的 JSON 对象,
var USER_DAYS = JSON.parse('[{"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,"type":"CM","startDate":"2017-04-20","Dep":"2017-04-19"}]');
console.log('Original JSON = ' +JSON.stringify(USER_DAYS));
USER_DAYS.forEach(function(e) {
e.id = e.nr;
delete e.nr;
e.date = e.req;
delete e.req;
e.title=e.type;
delete e.type;
e.allDay= true;
e.className='done';
delete e.Dep;
});
console.log('Modified JSON = '+JSON.stringify(USER_DAYS));
我有一个 java servlet,它使用数组格式将 json 对象发送到 jsp 页面 java 脚本变量。
这是我的 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 在我的控制台中是这样的: [{"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,"type":"CM","startDate":"2017-04-20","Dep":"2017 -04-19"}]
我希望此 Json 数组在 java 脚本标记中仅以该格式可见:(这是 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 变量(java脚本)中来自 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'
},
有人可以帮助我吗?
您已经拥有它作为字符串:
String s = jsonArray.toString();
在会话中存储 s
而不是 jsonArray
;
session.setAttribute("jsonArray", s);
并在 servlet 中打印:
var USER_DAYS = ${jsonArray};
我的测试
Java servlet(带有示例数据):
bingo.jsp
:
HTML 结果:
渲染结果:
有效。
你可以这样写
<script>
var DAYS = '${jsonArray}';
if(DAYS.length > 0 ){
var USER_DAYS = {
id: DAYS[0].nr,
date: DAYS[0].req,
title: DAYS[0].type,
startDate: new Date(DAYS[0].startDate),
endDate: new Date(DAYS[0].endDate),
allDay: true,
className: 'done'
};
}
</script>
您可以将 jsonString
解析为 javascript JSON
对象。然后您想更改 json
对象的一些对象键,再删除一个额外的键 [e.g "Dep":"2017-04-19"]
,最后想在最终的 json 对象中添加两个带有值的键。
allDay: true,
className: 'done'
这里是 solution.set 数据作为 json 字符串。
session.setAttribute("jsonArray",jsonArray.toString());
在你的jsp
var USER_DAYS = JSON.parse('${jsonArray}');
这将创建一个名为 USER_DAYS
的 JSON
对象。
最后修改你的 JSON 对象,
var USER_DAYS = JSON.parse('[{"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,"type":"CM","startDate":"2017-04-20","Dep":"2017-04-19"}]');
console.log('Original JSON = ' +JSON.stringify(USER_DAYS));
USER_DAYS.forEach(function(e) {
e.id = e.nr;
delete e.nr;
e.date = e.req;
delete e.req;
e.title=e.type;
delete e.type;
e.allDay= true;
e.className='done';
delete e.Dep;
});
console.log('Modified JSON = '+JSON.stringify(USER_DAYS));