Spring bootでデータの更新ができず困っています

実現したいこと

spring bootにてCRUD機能を作成しており、更新(編集)機能を実装したいです。

発生している問題・分からないこと

一覧画面→編集画面の表示まではできたのですが、「保存ボタン」を押しても画面が切り替わらず情報の編集できません。
デバック機能で見たところ、controllerの85行目までデータが動いていることは確認できたのですが
エラーが出ているわけではないため、その後修正点が不明な状況です。(バリデーションは効いています)

該当のソースコード

Controllerクラス

12@Controller 3public class checkTestController { 4 5@Autowired 6private checkTestService checktestService; 7 @GetMapping("/list") 8 public String displayList(Model model) { 9 List<checkTestEntity> list = checktestService.searchAll(); 10 model.addAttribute("list", list); 11 return "list"; 12 } 13 14 //ユーザー編集画面を表示 15 @GetMapping("/{id}/edit") 16 public String displayEdit(@PathVariable Integer id, Model model) { 17 checkTestEntity checktestEntity = checktestService.findById(id); 18 checkTestEditRequest checktesteditRequest = new checkTestEditRequest(); 19 checktesteditRequest.setCategory(checktestEntity.getCategory()); 20 checktesteditRequest.setPayment_store(checktestEntity.getPayment_store()); 21 checktesteditRequest.setPayment_way(checktestEntity.getPayment_way()); 22 checktesteditRequest.setCost(checktestEntity.getCost()); 23 checktesteditRequest.setComments(checktestEntity.getComments()); 24 model.addAttribute("checkTestEditRequest", checktesteditRequest); 25 return "edit"; 26 } 27 28 // ユーザー更新 29 @PostMapping(value ="/update") 30 public String update(@Validated @ModelAttribute checkTestEditRequest checktesteditRequest, BindingResult result, Model model) { 31 if (result.hasErrors()) { 32 List<String> errorList = new ArrayList<String>(); 33 for (ObjectError error : result.getAllErrors()) { 34 errorList.add(error.getDefaultMessage()); 35 } 36 model.addAttribute("validationError", errorList); 37 return "edit"; 38 } 39 40 checktestService.update(checktesteditRequest); 41 return String.format("redirect:/list", checktesteditRequest.getId()); 42 } 43}

serviceクラス

1@Service 2@Transactional(rollbackFor = Exception.class) 3public class checkTestService { 4 5 @Autowired 6 private checkTestRepository checktestRepository; 7 8 public List<checkTestEntity> searchAll() { 9 return checktestRepository.findAll(); 10 } 11 12 public void update(checkTestEditRequest checktesteditRequest) { 13 checkTestEntity checktest = findById(checktesteditRequest.getId()); 14 checktest.setId(checktesteditRequest.getId()); 15 checktest.setPayment_day(parseLocalDate(checktesteditRequest.getPayment_day())); 16 checktest.setCategory(checktesteditRequest.getCategory()); 17 checktest.setPayment_store(checktesteditRequest.getPayment_store()); 18 checktest.setPayment_way(checktesteditRequest.getPayment_way()); 19 checktest.setCost(checktesteditRequest.getCost()); 20 checktest.setComments(checktesteditRequest.getComments()); 21 checktestRepository.save(checktest); 22 } 23 24 public LocalDate parseLocalDate(String date) { 25 String date1 = date; 26 LocalDate date2 = LocalDate.parse(date1, DateTimeFormatter.ofPattern("yyyy-MM-dd")); 27 return date2; 28 } 29 30}

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="../css/add.css"> <title>Document</title> </head> <body> <div class="Form"> <div th:if="${validationError}" th:each="error : ${validationError}"></div> <h1>修正</h1> <form th:action="@{/update}" th:object="${checkTestEditRequest}" method="post"> <div class="Form-whole"> <div th:errors="*{payment_day}" td style="color: red;"></div> <div class="Form-Item"> <p class="Form-Item-Label"> <span class="Form-Item-Label-Required">必須</span>日時</p> <input type="date" class="Form-Item-Input" th:field="*{payment_day}"> </div> <div class="Form-whole"> <div th:errors="*{category}" td style="color: red;"></div> <div class="Form-Item"> <p class="Form-Item-Label"><span class="Form-Item-Label-Required">必須</span>項目</p> <select name="status" class="Form-Item-Input" th:field="*{category}"> <option value="">ー選択して下さいー</option> <option value="食費">食費</option> <option value="家賃">家賃</option> <option value="光熱費">光熱費</option> <option value="通信費">通信費</option> <option value="交際費">交際費</option> <option value="交通費">交通費</option> <option value="雑費(趣味など)">雑費(趣味など)</option> </select> </div> </div> <div th:errors="*{payment_store}" td style="color: red;"></div> <div class="Form-Item"> <div class="Form-Item"> <p class="Form-Item-Label isMsg">店舗</p> <input type="text" class="Form-Item-Input" th:field="*{payment_store}"> </div> </div> <div class="Form-whole"> <div th:errors="*{payment_way}" td style="color: red;"></div> <div class="Form-Item"> <p class="Form-Item-Label"><span class="Form-Item-Label-Required">必須</span>支払方法</p> <select name="status" class="Form-Item-Input" th:field="*{payment_way}"> <option value="">ー選択して下さいー</option> <option value="現金">現金</option> <option value="クレジットカード">クレジットカード</option> <option value="QR決済">QR決済</option> <option value="交通系IC">交通系IC</option> </select> </div> </div> <div class="Form-whole"> <div th:errors="*{cost}" td style="color: red;"></div> <div class="Form-Item"> <p class="Form-Item-Label"><span class="Form-Item-Label-Required">必須</span>金額</p> <input type="number" class="Form-Item-Input" th:field="*{cost}"> </div> </div> <div class="Form-whole"> <div th:errors="*{comments}" td style="color: red;"></div> <div class="Form-Item"> <p class="Form-Item-Label isMsg">メモ</p> <textarea class="Form-Item-Textarea" th:field="*{comments}"></textarea> </div> </div> <div> <button type="button" class="button2"><a th:href="@{/list}">戻る</a></button> <button type="submit" class="button1">保存</button> </div> </div> </form> </div> </body> </html>

entityクラス

1@Entity 2@Data 3@Table(name = "payment_table") 4public class checkTestEntity { 5 6 /** 7 * ID 8 */ 9 @Id 10 @Column(name = "id") 11 @GeneratedValue(strategy = GenerationType.IDENTITY) 12 private Integer id; 13 /** 14 * 日時 15 */ 16 @Column(name = "payment_day") 17 private LocalDate payment_day; 18 /** 19 * 項目 20 */ 21 @Column(name = "category") 22 private String category; 23 /** 24 * 店舗 25 */ 26 @Column(name = "payment_store") 27 private String payment_store; 28 /** 29 * 支払方法 30 */ 31 @Column(name = "payment_way") 32 private String payment_way; 33 /** 34 * コスト 35 */ 36 @Column(name = "cost") 37 private Integer cost; 38 /** 39 * 備考 40 */ 41 @Column(name = "comments") 42 private String comments; 43 44}

試したこと・調べたこと

上記の詳細・結果

試したこと
・アノテーションを @PostMapping→@RequestMappingに変更
・retuneの値をreturn String.format("redirect:/list", checktesteditRequest.getId()); から return "redirect:list";に変更

いずれも現状と変化なく、「保存ボタン」を押しても情報の更新はできませんでした。

補足

初心者のため多々間違いがあるかと思いますが、よろしくお願いいたします。

コメントを投稿

0 コメント