我正在使用Spring MVC中的FullCalendar。我有一个控制器listall()。该控制器返回所有事件,但是我不知道如何在JavaScript中使用此控制器函数。
home.html
$(function() {
$('#calendar').fullCalendar({
events: [
{
title : 'tarea2',
start : '2018-12-24',
end : '2010-12-25'
}
]
})
});
控制器:
@GetMapping("/")
public ModelAndView getPlanificado() {
ModelAndView model = new ModelAndView();
model.addObject("events", eventsService.listAll());
model.setViewName("/entrenador/home");
return model;
}
我需要使用从控制器MVC(事件)到JavaScript的事件列表,但我不知道如何包括。
您需要做的第一件事是进行AJAX调用并返回JSON响应而不是模型。
创建一个POJO类,该类构成了以下绘制json的所有字段。
。public class Event{
private Long id;
private String title;
private Date start;
private Date end;
//getters setters and other required fields
}
然后是下面的控制器方法。
@RequestMapping(value = "/", method = RequestMethod.GET,produces="application/json")
@ResponseBody
public ResponseEntity<String> getPlanificado()
{
List<Event> events = eventsService.listAll();
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json; charset=utf-8");
if (calendarEvents.size() > 0)
{
return new ResponseEntity<String>(new JSONSerializer().include("id","title","end","start").exclude("*").serialize(calendarEvents), headers, HttpStatus.OK);
}
return new ResponseEntity<String>(null, headers, HttpStatus.OK);
}
然后调用上述方法,如Ajax调用。
$.ajax({
url: '/',
headers:{
'Accept' : 'application/json',
'Content-Type': 'application/json'
},
success: function(result){
if(result!== null){
var len = result.length;
if(len > 0){
var jsonString = JSON.stringify(result);
console.log(jsonString);
for(var i=0; i<len; i++){
console.log(result[i]);
var title=result[i].title;
var start=result[i].start;
var startDate = new Date(start);
console.log("startDate :"+startDate);
var end=result[i].end;
var endDate = new Date(end);
console.log("endDate :"+endDate);
var event={ title:classname, start:startDate, end:endDate};
$('#calendar').fullCalendar( 'renderEvent', event, true);
}
}
}else{
console.log("NO events");
}
},error: function (result) {
console.log("AJAX error");
}
});
注意:我使用Flexjson将Java对象转换为JSON序列化目的。