Struts: getElementByID из области запроса (Javascript) - PullRequest
0 голосов
/ 19 марта 2012

Я программирую приложение в Struts, и мне нужно выделить несколько напоминаний в календаре jquery. У меня следующий вопрос:

В моем действии watchCalendar.java (которое пересылается в jsp, работающий с именем sideCalendar.jsp), я установил атрибут в области запроса, а именно:

  request.setAttribute("reminders",queryResults);

Я хотел бы получить доступ к этому атрибуту в области запроса из сценария Java (это мой вопрос). На самом деле я хочу получить доступ к этому массиву напоминаний и получить startDate и endDate каждого напоминания, чтобы я мог выделить диапазон в них в своем календаре. Таким образом, пользователь будет знать, сколько дней у него в календаре, чтобы выполнить запрос в своем напоминании.

Я пытался использовать:

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

Чтобы я мог скопировать массив напоминаний в области запроса в область javascript моего компонента просмотра.

Затем я напечатал это на экране, используя:

document.write(reminders);

Тем не менее, он выводит только «ноль» на виде.

Я много искал в Интернете и не нашел никакой дополнительной информации, кроме как с помощью функции getElementById ().

Я буду продолжать расследование, но я бы действительно оценил бы некоторые рекомендации.

Большое спасибо за чтение !!

P.D: Я могу получить массив напоминаний из базы данных, и я установил его на действие без проблем. Я думаю, что моя главная проблема заключается в том, как получить доступ к этому атрибуту из представленного javascript.

1 Ответ

1 голос
/ 19 марта 2012

Область запроса, которую вы задаете в 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>

Теперь вы можете получить доступ к переменной reminders в любом месте страницы из Javascript.Например:

reminders[21].end; // July 7, 2020

Лучше было бы сначала установить атрибут запроса со стороны сервера (Struts) в формат JSON:

request.setAttribute("reminders", convertToJSON(queryResults)); 

Затем отрендерить его в свой JSP.и назначить его непосредственно переменной:

var reminders = ${reminders};
...