私はthisブログの投稿に従っています。Java Strutsを使用してfullcalendarイベントデータを取り込む
ただし、私のカレンダーは表示されません。私はデータベースからデータを取得し、JSON(現在はテストデータをハードコードしています)を使用して出力し、$ .post()を使用してJSONデータを取得し、カレンダーにデータを取り込みたいとします。
私のコード -
アクションマッピング定義
<action path="/getCalendarEvents"
scope="request"
type="com.action.struts.AjaxAction"
validate="false"/>
eventCalendar.jsp
<script type="text/javascript">
$(document).ready(function() {
$.post('getCalendarEvents.html?method=allEvents', {action: ''},
function(data) {
var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();
$('#calendar').fullCalendar({
theme: true,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: data
});
}, "json"
);
});
</script>
AjaxAction.java
public class AjaxAction extends ActionForward{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
AjaxMoreUtil.getAllEvents(request, response);
return null;
}
}
AjaxMoreUtil.java
public class AjaxMoreUtil {
public static void getAllEvents(HttpServletRequest request, HttpServletResponse response) throws Exception {
ArrayList<CalendarDTO> allEventList = new ArrayList<CalendarDTO>();
CalendarDTO c = new CalendarDTO();
c.setId(1);
c.setStart("2017-06-21");
c.setEnd("2017-06-26");
c.setTitle("Task in Progress");
allEventList.add(c);
CalendarDTO d = new CalendarDTO();
d.setId(2);
d.setStart("2017-06-01");
d.setEnd("2017-06-10");
d.setTitle("Task in Progress");
allEventList.add(d);
String json = new Gson().toJson(allEventList);
System.out.println("json value " + json);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);
}
}
私はPOSTと何もディスプレイ用の404を取得するアプリケーションを実行すると。
私はストラットに関して何も知らないので、なぜあなたがあなたの要求に対して404を得ているのか言うことはできません。しかし、カレンダー設定の面では、間違った方向に進むでしょう。カレンダーをページのロード時に宣言し、次に「イベント」プロパティーはPOSTメソッドを実行する関数でなければなりません。あなたのサーバーは日付でイベントをフィルタリングするために使用する "開始"と "終了"パラメータを受け入れる必要があります。こうすると、カレンダーのビュー/日付が変更されると、カレンダーは自動的に関連する日付のイベントを取得します。それが現れたら、あなたは一度にそれらをすべて取っていきます。それは不十分です... – ADyson
...時間が経つにつれてはるかに非効率的になり、おそらく人々は通常は実際には見られません。詳細はhttps://fullcalendar.io/docs/event_data/events_function/およびhttps://fullcalendar.io/docs/event_data/events_json_feed/を参照してください。 – ADyson