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

実現したいこと

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

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

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

該当のソースコード

JAVA

12@Controller3public class checkTestController {4 5@Autowired6private 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}

JAVA

1@Service2@Transactional(rollbackFor = Exception.class)3public class checkTestService {4 5 @Autowired6 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}

HTML

1<!DOCTYPE html> 2<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <link rel="stylesheet" href="../css/add.css"> 7 <title>Document</title> 8</head> 9 <body> 10 <div class="Form"> 11 <div th:if="${validationError}" th:each="error : ${validationError}"></div> 12 <h1>修正</h1> 13 <form th:action="@{/update}" th:object="${checkTestEditRequest}" method="post"> 14 <div class="Form-whole"> 15 <div th:errors="*{payment_day}" td style="color: red;"></div> 16 <div class="Form-Item"> 17 <p class="Form-Item-Label"> 18 <span class="Form-Item-Label-Required">必須</span>日時</p> 19 <input type="date" class="Form-Item-Input" th:field="*{payment_day}"> 20 </div> 21 <div class="Form-whole"> 22 <div th:errors="*{category}" td style="color: red;"></div> 23 <div class="Form-Item"> 24 <p class="Form-Item-Label"><span class="Form-Item-Label-Required">必須</span>項目</p> 25 <select name="status" class="Form-Item-Input" th:field="*{category}"> 26 <option value="">ー選択して下さいー</option> 27 <option value="食費">食費</option> 28 <option value="家賃">家賃</option> 29 <option value="光熱費">光熱費</option> 30 <option value="通信費">通信費</option> 31 <option value="交際費">交際費</option> 32 <option value="交通費">交通費</option> 33 <option value="雑費(趣味など)">雑費(趣味など)</option> 34 </select> 35 </div> 36 </div> 37 <div th:errors="*{payment_store}" td style="color: red;"></div> 38 <div class="Form-Item"> 39 <div class="Form-Item"> 40 <p class="Form-Item-Label isMsg">店舗</p> 41 <input type="text" class="Form-Item-Input" th:field="*{payment_store}"> 42 </div> 43 </div> 44 <div class="Form-whole"> 45 <div th:errors="*{payment_way}" td style="color: red;"></div> 46 <div class="Form-Item"> 47 <p class="Form-Item-Label"><span class="Form-Item-Label-Required">必須</span>支払方法</p> 48 <select name="status" class="Form-Item-Input" th:field="*{payment_way}"> 49 <option value="">ー選択して下さいー</option> 50 <option value="現金">現金</option> 51 <option value="クレジットカード">クレジットカード</option> 52 <option value="QR決済">QR決済</option> 53 <option value="交通系IC">交通系IC</option> 54 </select> 55 </div> 56 </div> 57 <div class="Form-whole"> 58 <div th:errors="*{cost}" td style="color: red;"></div> 59 <div class="Form-Item"> 60 <p class="Form-Item-Label"><span class="Form-Item-Label-Required">必須</span>金額</p> 61 <input type="number" class="Form-Item-Input" th:field="*{cost}"> 62 </div> 63 </div> 64 <div class="Form-whole"> 65 <div th:errors="*{comments}" td style="color: red;"></div> 66 <div class="Form-Item"> 67 <p class="Form-Item-Label isMsg">メモ</p> 68 <textarea class="Form-Item-Textarea" th:field="*{comments}"></textarea> 69 </div> 70 </div> 71 <div> 72 <button type="button" class="button2"><a th:href="@{/list}">戻る</a></button> 73 <button type="submit" class="button1">保存</button> 74 </div> 75 </div> 76 </form> 77 </div> 78 </body> 79</html>

JAVA

1@Entity2@Data3@Table(name = "payment_table")4public class checkTestEntity {5 6 8 9 @Id10 @Column(name = "id")11 @GeneratedValue(strategy = GenerationType.IDENTITY)12 private Integer id;13 15 16 @Column(name = "payment_day")17 private LocalDate payment_day;18 20 21 @Column(name = "category")22 private String category;23 25 26 @Column(name = "payment_store")27 private String payment_store;28 30 31 @Column(name = "payment_way")32 private String payment_way;33 35 36 @Column(name = "cost")37 private Integer cost;38 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 コメント