実現したいこと
以下の calendar.html 2行目の user.id を表示しようとするとエラーが出ます。
実現方法が分からないです。ご協力よろしくお願いします。
また、spring や thymeleaf のリファレンスにできる限り慣れていきたいと思っています。
回答する上で参考にしたリファレンスの該当箇所を教えていただけると、
自分で探し出すための参考になるため、大変嬉しいです。(まだリファレンスに慣れておらず、、余力があれば是非よろしくお願いいたします。)
HomeController.java で、model.addAttribute("frames", reservationInfos);で
データを渡しているところを、 for 文の繰り返し処理内で渡すということも考えましたが
Thymeleaf で上手いことやれるならそちらの方がいいのかなと思っております。
(全然実現方法は分からない状況ですが)
calendar.html
1<div th:each="frame : ${frames}" th:object="${frame}"> 2 <p th:text="'user_id ==> ' + *{user.id}"></p> 3 <p th:text="'Type ==> ' + *{type}"></p> 4 <p th:text="'予約した日 ==> ' + *{reserved_date}"></p> 5</div>
HomeController.java
1 @PostMapping("/calendar") 2 public String showCalendar(@Validated HospitalInfoForm form, BindingResult result, Model model) { 3 4 if (result.hasErrors()) { 5 return showIndex(form); 6 } 7 8 form.setDateTodayIfNull(); 9 List<UserReservationEntity> reservationInfos = service.getDateSchedule(form.hospital_id, form.date); 10 log.info("user_id ====> " + reservationInfos.get(0).user.id); 11 model.addAttribute("frames", reservationInfos); 12 model.addAttribute("hospitalName", service.getHospitalName(form.hospital_id)); 13 model.addAttribute("targetDate", form.date); 14 15 return "calendar"; 16 }
★★★★ 追記箇所 ★★★★
UserEntity.java
1@AllArgsConstructor 2public class UserEntity { 3 public int id; 4 public String name; 5 public String gender; 6 public LocalDate birthday; 7}
★★★★ 追記箇所 ★★★★
UserReservationEntity.java
1@Getter 2@AllArgsConstructor 3public class UserReservationEntity { 4 public UserEntity user; 5 public HospitalDateScheduleEntity schedule; 6 7 public String type; 8 public LocalDate reserved_date; 9 10 public int getUserId() { 11 return this.user.id; 12 } 13}
HospitalDateScheduleEntity.java
1@AllArgsConstructor 2public class HospitalDateScheduleEntity { 3 public int id; 4 public int hospital_id; 5 public LocalDate target_date; 6 public LocalTime target_time; 7}
↓いったんクエリせず、ベタ打ちでデータを作成しています。
ReservationInfoService.java
1@Service 2@RequiredArgsConstructor 3public class ReservationInfoService { 4 5 private final ReservationInfoRepository repository; 6 7 @Transactional 8 public String getHospitalName(int id) { 9 return repository.getHospitalName(id); 10 } 11 12 @Transactional 13 public List<UserReservationEntity> getDateSchedule(int hospital_id, LocalDate date) { 14// return repository.getTargetDateSchedule(hospital_id, date); 15 16 // 1.ユーザー生成 17 UserEntity user1 = new UserEntity(1, "harukaze", "woman", LocalDate.of(1995, 12, 5)); 18 UserEntity user2 = new UserEntity(2, "doncoco" , "man" , LocalDate.of(1990, 1, 2)); 19 UserEntity user3 = new UserEntity(3, "TomBrown", "man" , LocalDate.of(1980, 4, 19)); 20 UserEntity user4 = new UserEntity(4, "MORISANCHU", "woman", LocalDate.of(1980, 4, 19)); 21 UserEntity user5 = new UserEntity(5, "MINAMIKAWA", "man" , LocalDate.of(1980, 4, 19)); 22 23 // 2.予約枠生成 24 HospitalDateScheduleEntity frame1 = new HospitalDateScheduleEntity(1, 1, LocalDate.now(), LocalTime.of(10,0)); 25 HospitalDateScheduleEntity frame2 = new HospitalDateScheduleEntity(2, 1, LocalDate.now(), LocalTime.of(11,0)); 26 HospitalDateScheduleEntity frame3 = new HospitalDateScheduleEntity(3, 1, LocalDate.now(), LocalTime.of(12,0)); 27 HospitalDateScheduleEntity frame4 = new HospitalDateScheduleEntity(4, 1, LocalDate.now(), LocalTime.of(12,30)); 28 HospitalDateScheduleEntity frame5 = new HospitalDateScheduleEntity(5, 1, LocalDate.now(), LocalTime.of(14,30)); 29 30 // 3.予約枠に予約をセット 31 List<UserReservationEntity> reserveList = List.of( 32 new UserReservationEntity(user1, frame1, "200", LocalDate.now()), 33 new UserReservationEntity(null, frame1, "200", LocalDate.now()), 34 new UserReservationEntity(null, frame1, "200", LocalDate.now()), 35 new UserReservationEntity(null, frame1, "200", LocalDate.now()), 36 new UserReservationEntity(null, frame1, "200", LocalDate.now()), 37 new UserReservationEntity(user2, frame2, "400", LocalDate.now()), 38 new UserReservationEntity(null, frame2, "400", LocalDate.now()), 39 new UserReservationEntity(null, frame2, "400", LocalDate.now()), 40 new UserReservationEntity(null, frame2, "400", LocalDate.now()), 41 new UserReservationEntity(user3, frame3, "200", LocalDate.now()), 42 new UserReservationEntity(user4, frame4, "400", LocalDate.now()), 43 new UserReservationEntity(user5, frame5, "200", LocalDate.now()) 44 ); 45 46 return reserveList; 47 } 48}
発生している問題・分からないこと
エラー内容:Caused by: org.attoparser.ParseException: Exception evaluating SpringEL expression
(User.id)
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
getter を付けてみるなどしましたが、未だ実現できておりません。
補足
id 'org.springframework.boot' version '3.2.6'
java : 21
lombok
thymeleaf
回答1件
あなたの回答
tips
プレビュー