Struts:getElementByID来自请求范围(Javascript)

Struts: getElementByID from the request scope (Javascript)

本文关键字:范围 Javascript 请求 getElementByID Struts      更新时间:2023-09-26

我正在Struts中编程一个应用程序,我需要在jquery日历中突出显示一些提醒。我有以下问题:

在我的actionwatchCalendar.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访问这个属性。

您在Struts中设置的请求范围仅限于服务器端,因此Javascript无法获得它。例如:

<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};