Как интегрировать JQuery FullCalendar с JSP - PullRequest
1 голос
/ 14 февраля 2010
events: [
    {
     title: 'All Day Event',
     start: new Date(2010,2,13)
    },
    {
     title: 'Long Event',
     start: new Date(y, m, d-5),
     end: new Date(y, m, d-2)
    }
]

Как сделать этот массив в JSP после получения данных из базы данных?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2010
  1. Создайте класс Javabean Event, который будет выглядеть следующим образом

    public class Event {
        private String title;
        private Date start;
        private Date end;
        // Add/generate getters and setters.
    }
    
  2. Создайте Servlet, который использует Google Gson для преобразования его в JSON .

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOexception {
        List<Event> events = eventDAO.list();
        String json = new Gson().toJson(events);
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().write(json);
    }
    

    Отобразите это на url-pattern, например, /jsonGetEvents.

  3. В jQuery используйте функцию $.getJSON:

    $.getJSON('jsonGetEvents', function(events) {
        // `events` is a JSON string. Do your thing with it. This examples loops over it.
        $.each(events, function(index, event) {
            var title = event.title;
            var start = event.start;
            var end = event.end;
        });
    });
    
0 голосов
/ 14 февраля 2010

Что ж, ваш вопрос неопределенный, но в целом проще всего связать ваши данные в виде Бина или Карты с запросом как атрибутом или чем-то еще; это зависит от того, какую платформу вы используете. Как только вы это сделаете, вы просто обратитесь к полям с помощью выражений JSTL EL:

events: [
  <c:forEach var='event' items='${myData.events}'>
    { title: '${event.title}', start: new Date(${event.timestamp}) },
  </c:forEach>
  null
];

Завершающий ноль - это положить что-то для IE; Вы также можете закодировать цикл, чтобы избежать запутанной конечной запятой.

В моих приложениях я всегда пишу EL-функцию "jsQuote", которая выполняет что-то аналогичное "fn: escapeXml" для синтаксиса строковой константы Javascript. Опасно просто выгружать такие вещи, как заголовок вашего события, прямо в исходный код Javascript, но в стандартных библиотеках JSP нет функции, позволяющей выполнять экранирование строк для Javascript. Это легко написать, однако. Таким образом, в моем коде эта строка будет выглядеть так:

  {title: '${xyz:jsQuote(event.title)}', start: new Date(${event.timestamp}) },

Вам не нужно беспокоиться о "метке времени", если она является "длинной" или "длинной" в ваших данных.

Опять же, все это полностью зависит от того, как выглядят ваши данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...