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

时间:2012-03-18 22:00:27

标签: java javascript jquery netbeans struts

我正在使用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中查看此属性。

1 个答案:

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