現在、勤怠管理ができるアプリを作ろうと思っています。その中で、
spring boot で entityとして作成したクラスに値を入力したいと思っていますが、エラーが出てています。
前提・実現したいこと
発生している問題・エラーメッセージ
追記したエラーになります。 2020-12-05 23:56:38.489 ERROR 19732 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/test1.html]")] with root cause org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'day1_st1' cannot be found on null 先ほど回答を頂いた方に言及して頂いたエラーになります。 java.lang.IllegalStateException: No primary or single public constructor found for interface org.springframework.security.core.Authentication - and no default constructor found either
該当のソースコード
test1.html
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> border="1" width="50%" align="center"> <form th:action="@{/attendance}" th:object="${Attendance}" method="post"> <tr><!-- ここから --> <td th:text=${month}></td> <th><input type="number" name="day1_st1" th:value="*{day1_st1}"max = 24 min = 0 >:<input type=number name="day1_st2" th:value="*{day1_st2}" max = 60 min = 0 ></th><!-- ここに出金時間を入れます --> <th><input type="number" name="day1_end1" th:value="*{day1_end1}"max = 24 min = 0 >:<input type=number name="day1_end2" th:value="*{day1_end2}" max = 60 min = 0 ></th><!-- ここに退勤時間を入れます --> <th></th><!-- ここに休憩時間を入れます --> <th>勤務時間</th><!-- ここに勤務時間を入れます --> </tr><!-- ここまで --> </body> </html>
SecurityController.java
package com.example.demo.controller; import org.springframework.security.core.Authentication; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.servlet.ModelAndView; import com.example.demo.model.Attendance; import com.example.demo.model.SiteUser; import com.example.demo.repository.AttendanceRepository; import com.example.demo.repository.SiteUserRepository; import com.example.demo.util.Role; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @Controller public class SecurityController { private final SiteUserRepository userRepository; private final BCryptPasswordEncoder passwordEncoder; private final AttendanceRepository attendanceRepository; (...) @GetMapping("/attendance") public ModelAndView createAttendance (ModelAndView mv, @ModelAttribute("attendance") Authentication SiteUser) { mv.setViewName("test1"); mv.addObject("attendance", new Attendance()); return mv; }
Attendance.java
package com.example.demo.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.validation.constraints.Size; import lombok.Getter; import lombok.Setter; @Getter @Setter @Entity public class Attendance { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Size(min = 2, max = 20) private String username; private int month; private int day1_st1; private int day1_st2; private int day1_end1; private int day1_end2; }
試したこと
コントローラのmv.addObject("attendance", new Attendance());
htmlの th:object="${Attendance}"とth:value= を削除したところ、entitiyと関係のないhtmlの出力はできたので、entitiyに問題があると考えています。
補足情報(FW/ツールのバージョンなど)
Spring Tools 4 for Eclipse
Spring Boot 2. 3. 5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/05 15:00
2020/12/05 15:51
2020/12/05 16:03