質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

解決済

1回答

5258閲覧

<Spring Boot> 掲示板更新時のバリデーションの不具合

退会済みユーザー

退会済みユーザー

総合スコア0

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2019/05/25 01:35

前提・実現したいこと

Spring Bootで掲示板を作成しています。
バリデーションを実装しようとしており、新規書き込み時に、入力欄が空白だった場合エラーメッセージを表示させることには成功しました。
ただ、書き込みされたものを編集する場合に、入力欄が空白だと以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

ava.lang.IllegalArgumentException: The given id must not be null! at org.springframework.util.Assert.notNull(Assert.java:198) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]

該当のソースコード

Controller

1 @RequestMapping("/disedit") 2 public ModelAndView edit(ThreadsForm form) { 3 ThreadsEntity threadsEntityList = service.getOne(form.getId()); 4 ModelAndView modelAndView = new ModelAndView(); 5 modelAndView.addObject("threadsEntityList", threadsEntityList); 6 modelAndView.setViewName("/View_edit.html"); 7 8 return modelAndView; 9 } 10 11 @RequestMapping("/edit") 12 public ModelAndView edit(@ModelAttribute("form") @Valid ThreadsForm form, BindingResult result) { 13 if (result.hasErrors()) { 14 ModelAndView modelAndView = new ModelAndView("redirect:/disedit"); 15 modelAndView.addObject("form", form); 16 17 return modelAndView; 18 } else { 19 service.updateDB(form.getId(), form.getCharacterName(), form.getSkillName()); 20 ModelAndView modelAndView = new ModelAndView("redirect:/home"); 21 22 return modelAndView; 23 } 24 }

html

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<link rel="stylesheet" href="/CSS.css" type="text/css"> 5<meta charset="UTF-8"> 6<title>H×H Characters Threads</title> 7</head> 8<body> 9 <h1>Welcome to Hunter × Hunter Characters Threads</h1> 10 <form method="POST"> 11 <div th:object="${threadsEntityList}"> 12 <p> 13 ID : [[ *{id} ]]<input type="hidden" th:value=*{id} th:name="id"> 14 </p> 15 <p> 16 Name : <input type="text" th:value=*{name} th:name="characterName"> 17 </p> 18 <div th:if="${form}" th:object="${form}"> 19 <label th:if="${#fields.hasErrors('characterName')}" 20 th:errors="*{characterName}"></label> 21 </div> 22 <p> 23 Skill : <input type="text" th:value=*{skill} th:name="skillName"> 24 </p> 25 <div th:if="${form}" th:object="${form}"> 26 <label th:if="${#fields.hasErrors('skillName')}" 27 th:errors="*{skillName}"></label> 28 </div> 29 <input type="submit" formaction="/edit" value="Update!"> 30 </div> 31 </form> 32</body> 33</html> 34

試したこと

IDの値がnullで渡されている、というようなエラーなのですが、原因が全く分かりません。

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Controllerを以下のように変更したら、正常に作動しました。

@RequestMapping("/disedit") public ModelAndView edit(ThreadsForm form) { ThreadsEntity threadsEntityList = service.getOne(form.getId()); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("threadsEntityList", threadsEntityList); modelAndView.setViewName("/View_edit.html"); return modelAndView; } @RequestMapping("/edit") public ModelAndView edit(@ModelAttribute("form") @Valid ThreadsForm form, BindingResult result) { if (result.hasErrors()) { ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("form", form); ThreadsEntity threadsEntityList = service.getOne(form.getId()); modelAndView.addObject("threadsEntityList", threadsEntityList); modelAndView.setViewName("/View_edit.html"); return modelAndView; } else { service.updateDB(form.getId(), form.getCharacterName(), form.getSkillName()); ModelAndView modelAndView = new ModelAndView("redirect:/home"); return modelAndView; } }

投稿2019/05/25 01:52

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問