現在SpringBootとFullcarendarを使ったスケジュールアプリのようなものを作ろうとしています。
プログラミングを始めて間も無く、Webアプリ開発もFullcarendarを使うのも初めてでわからないことだらけなので質問させていただきます。
情報が不足していたり、至らない点もあるかと思いますがよろしくお願いいたします。
前提・実現したいこと
テーブルに登録されたイベント情報をカレンダーに表示する
試したこと
サービスクラス(EventService.java)でテーブルに登録されているイベントの中から、ログインユーザーのものだけを取り出してコントローラークラス(DiaryController.java)に渡し、それをdiary.htmlに渡そうとしています。
コントローラの書き方がわからず、他に参考になる資料も見つけることができなかったので
こちら(https://qiita.com/spboot/items/8ff6ea715348d6155001)のサイトを参考に書かせていただきました。
発生している問題・エラーメッセージ
ログを確認するとコントローラのtry catch文でcatch部分に入っているようです。
テーブルの定義がよくないのか、日付のフォーマットがよくないのか、コントローラの書き方がよくないのか何が原因かわからない状態です。
該当のソースコード
EventService.java
java
1package com.example.service; 2 3import java.util.List; 4 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.data.domain.Page; 7import org.springframework.data.domain.Pageable; 8import org.springframework.stereotype.Service; 9import org.springframework.transaction.annotation.Transactional; 10 11import com.example.domain.Event; 12import com.example.domain.User; 13import com.example.repository.EventRepository; 14 15@Service 16@Transactional 17 18public class EventService { 19 @Autowired 20 EventRepository eventRepository; 21 22 public List<Event> findAll() { 23 return eventRepository.findAllOrderByTitle(); 24 } 25 26 public Page<Event> findAll(Pageable pageable) { 27 return eventRepository.findAllOrderByTitle(pageable); 28 } 29 30 public Event findOne(Integer id) { 31 return eventRepository.findOne(id); 32 } 33 34 public Event create(Event event, User user) { 35 event.setUser(user); 36 return eventRepository.save(event); 37 } 38 39 public Event update(Event event, User user) { 40 event.setUser(user); 41 return eventRepository.save(event); 42 } 43 44 public void delete(Integer id) { 45 eventRepository.delete(id); 46 } 47 48 //userを条件とした目標一覧を返す 49 public List<Event> findByUserName(User user){ 50 List<Event> events = eventRepository.findAllWithUserOrderByTitle(); 51 for(int i=0; i<events.size(); i++) { 52 String username = events.get(i).getUser().getUsername(); 53 if(!(username.equals(user.getUsername()))) { 54 events.remove(i); 55 } 56 } 57 return events; 58 } 59 60}
DiaryController.java
java
1package com.example.web; 2 3import java.io.IOException; 4import java.util.List; 5 6import org.springframework.beans.factory.annotation.Autowired; 7import org.springframework.security.core.annotation.AuthenticationPrincipal; 8import org.springframework.stereotype.Controller; 9import org.springframework.web.bind.annotation.GetMapping; 10import org.springframework.web.bind.annotation.RequestMapping; 11 12import com.example.domain.Event; 13import com.example.service.EventService; 14import com.example.service.LoginUserDetails; 15import com.fasterxml.jackson.databind.ObjectMapper; 16 17@Controller 18@RequestMapping("diary") 19public class DiaryController { 20 @Autowired 21 EventService eventService; 22 23 @GetMapping 24 String diary() { 25 return "diary/diary"; 26 } 27 28 @GetMapping(path = "event") 29 public String getEvents(@AuthenticationPrincipal LoginUserDetails userDetails) throws IOException{ 30 String jsonMsg = null; 31 try { 32 List<Event> events = eventService.findByUserName(userDetails.getUser()); 33 // FullCalendarにエンコード済み文字列を渡す 34 ObjectMapper mapper = new ObjectMapper(); 35 jsonMsg = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(events); 36 }catch (IOException ioex) { 37 System.out.println("catch"); 38 } 39 System.out.println("--"); 40 System.out.println(jsonMsg); 41 System.out.println("--"); 42 return jsonMsg; 43 } 44}
V6__add-event.sql
sql
1CREATE TABLE events (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100), start VARCHAR(100), end VARCHAR(100), tag VARCHAR(100), comment VARCHAR(255)); 2INSERT INTO events (title, start, end, tag, comment) VALUES ('仕事', '2018-02-14 09:00:00', '2018-02-14 18:00:00', '仕事', '大事な会議がある' /*demo*/); 3ALTER TABLE events ADD username VARCHAR(100) NOT NULL DEFAULT 'user1'; 4
回答1件
あなたの回答
tips
プレビュー