I would like to populate my FullCalendar, which I have drawn on a webview, with data/ event dates stored in a database.
I know that I'll have to do this via JSON. The problem is that practically all documentation I've come accross online only stop at "How To Convert JSON to Java object", and vise-versa. How about making the converted JSON/ Java object visible in the HTML/ Java class?
For example, say I have a List of event/ appointment objects retrieved from a database.
List<FullCalendarData> events = new ArrayList();
The FullCalendarData
POJO class:
@Component
@Entity
@Table(name = "ENTITY_OBJECT")
@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS, value = "prototype")
@Inheritance(strategy = InheritanceType.JOINED)
public class FullCalendarData {
private String eventName;
private String startTime;
private String endTime;
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
}
Convert List<FullCalendarData> events
from Java to JSON:
Gson gson = new Gson();
String jsonAppointment = gson.toJson(events);
Now the problem is, how do I make jsonAppointment
visible in a the FullCalendar in the HTML\ webview below, or in other words, how do I access and iterate over jsonAppointment
and use it (jsonAppointment
) instead of the events
array below?
<!DOCTYPE html>
<html>
<head>
<link href='../fullcalendar/fullcalendar.css' rel='stylesheet' />
<link href='../fullcalendar/fullcalendar.print.css' rel='stylesheet' media='print' />
<script src='../lib/jquery.min.js'></script>
<script src='../lib/jquery-ui.custom.min.js'></script>
<script src='../fullcalendar/fullcalendar.min.js'></script>
<script>
$(document).ready(function() {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
editable: true,
events: [
{
title: 'All Day Event',
start: new Date(y, m, 1)
},
{
id: 999,
title: 'Repeating Event',
start: new Date(y, m, d + 4, 16, 0),
allDay: false
}
]
});
});
</script>
</head>
<body>
<div id='calendar'></div>
</body>
</html>
Call our webview:
public class FullCalendarWebView {
public VBox calendar() {
final WebView webView = new WebView();
final WebEngine engine = webView.getEngine();
engine.load("file:D:/standAloneDev//src/fc/fullcalendarwebview/fullcalendar-1.6.4/demos/selectable.html");
JSObject script = (JSObject) engine.executeScript("window");
script.setMember("eventClick", new JavaApp().javaApp());
VBox vb = new VBox();
vb.getChildren().add(webView);
return vb;
}
}