2009-12-21 54 views
1

我有一個問題,從MySQL加載事件數據到jquery fullcalendar ..給出的例子是在PHP中,我不知道如何去做java .. 這是示例代碼:如何將jQuery日曆與jsp集成

111, '標題'=> 「事件1」, '開始'=> 「$ $年 - 月 - 10」, 'URL'=> 「http://yahoo.com/」 ) )); ?>
+0

你有一個鏈接的例子嗎? – 2009-12-21 04:59:05

+0

並給你的代碼(你試圖使它工作,但它沒有) – Bozho 2009-12-21 07:20:32

回答

4

您需要爲此創建Servlet。創建一個類別extends HttpServlet並在doGet()中編寫代碼,從而將所需的JSON字符串寫入響應。您可以使用Google Gson將Java對象轉換爲JSON字符串。

例如:

// Gather data. 
Map<String, Object> map = new HashMap<String, Object>(); 
map.put("id", 111); 
map.put("title", "event1"); 
map.put("start", new SimpleDateFormat("yyyy-MM-10").format(new Date())); 
map.put("url", "http://yahoo.com/"); 

// Convert to JSON string. 
String json = new Gson().toJson(map); 

// Write JSON string. 
response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
response.getWriter().write(json); 

然後,只需映射這個servlet在web.xml期望url-pattern

取而代之的是Map你甚至可以創建你的JavaBean類Event

public class Event { 
    private Long id; 
    private String title; 
    private Date start; 
    private URL url; 
    // Add/generate getters/setters. 
} 

你甚至可以使用GSON把它轉換:

Event event = eventDAO.find(request.getParameter("id")); 
String json = new Gson().toJson(event); 

這種方式可以更容易收集他們都在一個List<Event>哪一個更優於List<Map<String, String>>

List<Event> events = eventDAO.list(); 
String json = new Gson().toJson(events); 
+0

謝謝你的解決方案。我已經嘗試在jsp代碼它並沒有工作..這裏是我的代碼: <%@ page import =「java.util.HashMap;」 %> <%@ page import =「java.util.Map;」 %> <%@ page import =「com.google.gson.Gson;」 %> <% Map map = new HashMap (); map.put(「title」,「event1」); map.put(「start」,「2009-11-11」); //轉換爲JSON字符串。 String json = new Gson()。toJson(map); //寫入JSON字符串。 response.setContentType(「application/json」); response.setCharacterEncoding(「UTF-8」); response.getWriter()。write(json); %> 事件頁面: 事件:「TemuDia-1.0/manageapp/getapp.jsp」 – user235779 2010-01-05 09:45:40

+0

我說你需要爲此創建一個Servlet。我沒有說過你需要在JSP中這樣做。 JSP不適用於Java代碼,它僅僅是收據的麻煩。 JSP是一種視圖技術,爲HTML/CSS/JS提供了一個模板,並能夠使用taglibs/EL動態地控制頁面流和訪問數據。您使用servlet時遇到的問題是什麼?你只是不明白如何使用它們或在web.xml中聲明它們?然後,只是說/問這樣做,而不是去錯誤的解決方案。 – BalusC 2010-01-05 11:08:49

+0

我已經在servlet中完成了它,但它仍然沒有出現在jcalendar中。該文件的名稱是app.java..in html $('#calendar')。fullCalendar({events:「/ app」 }); – user235779 2010-01-16 03:17:17

0

在你的servlet把這個腳本:

map.put("id", 111); 
map.put("title", "event1"); 
map.put("start", new SimpleDateFormat("yyyy-MM-10").format(new Date())); 
map.put("url", "http://yahoo.com/"); 

// Convert to JSON string. 
String json = new Gson().toJson(map); 

// Put json between [] to be formatted by Fullcalendar 
json = "[" + json + "]"; 

// Write JSON string. 
response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
response.getWriter().write(json); 
0

首先,你需要調用從jQuery的servlet的 - 你這樣做與$阿賈克斯()。然後你需要將結果傳遞給日曆。以下工作正常:

$.ajax({ 
      url: 'app', 
      dataType: "json", 
      success: function(response) { 
       $('#calendar').fullCalendar({ 
        header: { 
         left: 'prev,next today', 
         center: 'title', 
         right: 'month,agendaWeek,agendaDay' 
        }, 
        editable: true, 
        events: [response] 
       }); 
      } 
     }); 

問候, 索林