完整日历Struts2 JSON

时间:2014-06-02 19:01:39

标签: jquery json struts2 fullcalendar

我无法弄清楚如何从JSON获取数据到我的Fullcalendar Jquery函数我已阅读过文档,但他们展示的唯一检查对我来说并不清楚

这是我的代码

<script>
$(document).ready(function() {
    $('#calendar').fullCalendar({
        theme: true,
        header: {
            left: 'prev,next today',
            center: 'title',
            right: 'month,agendaWeek'
        },
        editable: true,
        events: 'jsone.action'

    });

});

在我的操作中,我只返回3个值用于测试目的

@ParentPackage("json-default")
@Action(value = "jsone", results = {
@Result(type = "json", name = "success"),})
 public String title;
public String start;
public String end;

public String execute() {
    title="Event";
    start="2014-01-12T10:30:00-05:00";
    end="2014-01-12T12:30:00-05:00";
    System.out.println("execute");
    return SUCCESS;
}
//setters getters

当我打电话给&#34; jsone&#34;动作我得到这个所以我认为这是正确的格式,即使你加载日历我没有得到任何错误消息和jsone动作工作和正确执行

{"end":"2014-01-12T12:30:00-05:00","start":"2014-01-12T10:30:00-05:00","title":"event"}

注意id与一个有同样问题的人阅读这篇文章 https://stackoverflow.com/questions/17459184/implementing-fullcalendar-with-struts-2

1 个答案:

答案 0 :(得分:1)

现在我知道如何正确获取数据,所以我想发布解决方案。 对于这个例子,我将只使用一个事件。

动作中的第一个(使用注释)

@ParentPackage("json-default")
@Action(value = "jsone", results = {
@Result(type = "json", name = "success"),})

现在在action(java class)

public String title;
public String start;
public String end;

public String execute() {
    title="Event";
    start="2014-06-12T10:30:00-05:00";
    end="2014-06-12T12:30:00-05:00";
    return SUCCESS;
}
//GETTERS SETTERS

这是你的事件在JSP中的样子

events: function(start, end, timezone, callback) {
            $.ajax({
                url: 'jsone.action',
                dataType: 'json',
                data: {
                    start: start.unix(),
                    end: end.unix()
                },
                success: function(doc) {
                    var events = [];
                    events.push({
                        title: doc.title,
                        start: doc.start,
                        end: doc.end
                    });
                    callback(events);
                }
            });
        }

现在.. STARTEND参数仅用于返回一定数量的事件,而不是整个事件列表,CALLBACK参数用于返回一个数组事件然后成功function(doc) doc参数是从Action获取的事件,因此您可以轻松访问您的操作属性(在我的动作示例中,我使用了'title','start'和'结束'名称,但你可以使用任何不同的)也很重要,你知道你正在使用的fullcalendar版本,因为新的BETA版本(2.x)使用​​时刻而不是1.x版本使用的常用数据。 现在你必须使用这种格式

start="2014-06-12T10:30:00-05:00";
    end="2014-06-12T12:30:00-05:00";

重要提示:此示例使用“Struts2 JSON-Plugin”,因此需要@ParentPackage(“json-default”)才能使用此插件,您可以将其与maven一起使用

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-json-plugin</artifactId>
    <version>2.3.16.3</version>
</dependency>