我正在使用Struts编写应用程序,我需要在jquery日历中突出显示一些提醒。我有以下问题:
在我的动作watchCalendar.java中(转发给工作在sideCalendar.jsp上的jsp),我在请求范围上设置了一个属性,即:
request.setAttribute("reminders",queryResults);
我想在java脚本的请求范围内访问此属性(这是我的问题)。实际上我想访问这个提醒数组并获取每个提醒的startDate和endDate,这样我就可以在我的日历上突出显示它们中的范围。这样,用户将知道他在他的日历上有多少天在他的提醒中完成请求。
我尝试使用:
var arrayOfReminders = document.getElementById("reminders");
这样我就可以将请求范围中的提醒数组复制到我的视图组件的javascript区域。
然后我用:
将它打印在屏幕上document.write(reminders);
然而它只在视图上打印“null”。
我在互联网上搜索了很多,除了使用getElementById()函数之外还没有找到任何进一步的信息。
我会继续调查,但我会非常欣赏一些指导。
非常感谢你阅读!!
P.D:我可以从数据库中获取提醒数组,并且我在操作上设置它没有任何问题。我认为我的主要问题是如何从javascript中查看此属性。
答案 0 :(得分:1)
您在Struts中设置的请求范围仅限服务器端,因此Javascript无法获取它。解决这个问题的一种方法是在JSP中呈现一些东西。例如:
<script>
var reminders = []; //create a new array global
<c:forEach items="${reminders}" var="reminder">
reminders.push({start: "${reminder.startDate}", end: "${reminder.endDate}"});
</c:forEach>
</script>
现在,您可以通过Javascript访问页面中任意位置的reminders
变量。例如:
reminders[21].end; // July 7, 2020
更好的方法是首先将请求属性从服务器(Struts)端设置为JSON格式:
request.setAttribute("reminders", convertToJSON(queryResults));
然后,将其呈现到JSP中并将其直接分配给变量:
var reminders = ${reminders};