【问题标题】:how to integrate jquery calendar with jsp如何将jquery日历与jsp集成
【发布时间】:2010-12-28 15:13:38
【问题描述】:

我在将事件数据从 mysql 加载到 jquery fullcalendar 时遇到问题。给出的示例是在 php 中,我不知道如何在 java 中执行它。 这是示例代码:

111, '标题' => "事件1", '开始' => "$year-$month-10", 'url' => "http://yahoo.com/" ) )); ?>

【问题讨论】:

  • 你有这个例子的链接吗?
  • 并给出你的代码(你试图让它工作的那个,但它没有)

标签: java ajax jsp calendar


【解决方案1】:

您需要为此创建一个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);

然后将web.xml 中的这个servlet 映射到所需的url-pattern

您甚至可以创建 Javabean 类 Event,而不是 Map

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&lt;Event&gt; 中,这比List&lt;Map&lt;String, String&gt;&gt; 更可取:

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

【讨论】:

  • 感谢您的解决方案。我尝试在 jsp 中编写代码,但没有成功。这是我的代码: map = new HashMap(); map.put("title", "event1"); map.put("开始","2009-11-11"); // 转换为 JSON 字符串。 String json = new Gson().toJson(map); // 写入 JSON 字符串。 response.setContentType("应用程序/json"); response.setCharacterEncoding("UTF-8"); response.getWriter().write(json); %> 在事件页面中:事件:“TemuDia-1.0/manageapp/getapp.jsp”
  • 我说你需要为此创建一个Servlet。我没有说您需要在 JSP 中执行此操作。 JSP 不是 Java 代码,它只是麻烦的收据。 JSP 是一种视图技术,为 HTML/CSS/JS 提供模板,并能够使用 taglibs/EL 来控制页面流和动态访问数据。 servlet 有什么问题?您只是不明白如何使用它们或在 web.xml 中声明它们吗?然后只是说/问,而不是去寻求错误的解决方案。
  • 我已经在 servlet 中完成了,但它仍然没有出现在 jcalendar 中。这个文件的名字是 app.java..in html $('#calendar').fullCalendar({ events: "/app" });
【解决方案2】:

在你的 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);

【讨论】:

    【解决方案3】:

    首先,您需要从 jQuery 调用 servlet - 您可以使用 $.ajax() 来执行此操作。然后你需要将结果传递给日历。以下工作正常:

    $.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]
                    });
              }
            });
    

    您好, 索林

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多