2012-03-18 66 views
0

我在Struts中编写应用程序,我需要在jQuery日历中突出显示一些提示。我有以下问题:来自请求范围(Javascript)的Struts:getElementByID

在我的行动watchCalendar.java(转发到JSP IM工作称为sideCalendar.jsp),我设置的请求范围的属性,即:

request.setAttribute("reminders",queryResults); 

我想从java脚本(这是我的问题)请求范围中访问此属性。实际上,我想访问这组提醒并获取每个提醒的startDate和endDate,以便我可以在日历中突出显示它们的范围。这样,用户就会知道他的日历上有多少天在他的提醒中完成请求。

我试着使用:

var arrayOfReminders = document.getElementById("reminders"); 

,这样我可以提醒的阵列复制请求范围,我的看法组件的JavaScript的区域。

document.write(reminders); 

然而,它仅打印“空”的视图:

然后我使用印刷它在屏幕上。

我在网上搜索了很多,除了使用getElementById()函数之外,还没有找到任何进一步的信息。

我会继续调查,但我会真的欣赏一些指导。

非常感谢您的阅读!

P.D:我可以从数据库中获取提醒数组,并将其设置在没有问题的操作上。我认为我的主要问题是如何从javascript中访问该属性。

+1

请不要使用'document.write' – jantimon 2012-03-18 22:10:16

+0

噢真的吗?对不起,我对JavaScript有点新鲜感,除了document.write之外,你还会提出哪个函数? – AndresR 2012-03-18 22:37:47

回答

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

是的,它完美的作品。这是纯粹的天才!非常感谢!我是新来的JavaScript,所以我不知道你可以使用JS内JavaScript,真棒......! – AndresR 2012-03-18 22:36:30

+1

很高兴提供帮助。请记住,您实际上并没有在Javascript中使用JSTL。这更接近Javascript代码生成,因为您使用JSTL呈现Javascript代码。 – 2012-03-19 15:58:12