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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

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

Q&A

解決済

1回答

11253閲覧

thymeleaf fields.hasErrorsがエラーになりHTMLが表示されない(500error)

sad

総合スコア16

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

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

0グッド

0クリップ

投稿2020/11/12 04:19

環境:
Spring Tool Suite 4 4.7.2
Tomcat/9.0.30
JavaSE-11
MySQL


DBからリストを取得し、Create,Edit,Detail,Delete,List画面でそれぞれ処理する基本的なものをSpringBootで作成しています 。
やりたい事

Create.html(新規登録画面)とEdit.html(編集画面)にバリデーションチェックを実装

現状

Create.htmlには問題なく実装できたが、Edit.htmlに遷移しようとするとエラーになる。
エラーメッセージ(文字数制限のため一部抜粋)

Error

1 2org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "#fields.hasErrors('name')" (template: "Edit" - line 17, col 9) 3 at org.thymeleaf.spring5.expression.SPELVariableExpressionEvaluator.evaluate(SPELVariableExpressionEvaluator.java:290) ~[thymeleaf-spring5-3.0.11.RELEASE.jar:3.0.11.RELEASE] 4 at org.thymeleaf.standard.expression.VariableExpression.executeVariableExpression(VariableExpression.java:166) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] 5 at org.thymeleaf.standard.expression.SimpleExpression.executeSimple(SimpleExpression.java:66) ~[thymeleaf-3.0.11.RELEASE.jar:3.0.11.RELEASE] 6

どうやらEdit.htmlの#fields.hasErrors('name')の部分でエラーになっているらしいのですが、Create.htmlでは問題なく動作するので原因がわかりません。

Create.html

java

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<title>Insert title here</title> 6<script type="text/javascript" th:src="@{/jquery-3.5.1.min.js}"></script> 7</head> 8<body> 9 10<h2>新規登録</h2> 11 12<form action="EntityList" th:object="${entity}" method="post"> 13 14 <label>生年月日</label> 15 <span th:if="${#fields.hasErrors('year')}" th:errors="*{year}" style="color: red"></span> 16 <br> 17 <input type="text" id="year" name="year" th:attr="onkeyup='CalcAge();'" th:field="*{year}" value=null>18 <span th:if="${#fields.hasErrors('month')}" th:errors="*{month}" style="color: red"></span> 19 <br> 20 <input type="text" id="month" name="month" th:attr="onkeyup='CalcAge();'" th:field="*{month}">21 <span th:if="${#fields.hasErrors('day')}" th:errors="*{day}" style="color: red"></span> 22 <br> 23 <input type="text" id="day" name="day" th:attr="onkeyup='CalcAge();'" th:field="*{day}">24 <input type="text" id="age" name="age" readonly>25 <br> 26 <label>氏名</label> 27 <span th:if="${#fields.hasErrors('name')}" th:errors="*{name}" style="color: red"></span><br /> 28 <input type="text" id="name" name="name" th:field="*{name}"> 29 <br> 30 <label>かな</label> 31 <span th:if="${#fields.hasErrors('kana')}" th:errors="*{kana}" style="color: red"></span><br /> 32 <input type="text" id="kana" name="kana" th:field="*{kana}"> 33 <br> 34 <label>郵便番号</label> 35 <span th:if="${#fields.hasErrors('code')}" th:errors="*{code}" style="color: red"></span><br /> 36<input type="text" id="code" name="code" th:field="*{code}"> 37 <br> 38 <label>住所</label> 39 <span th:if="${#fields.hasErrors('add1')}" th:errors="*{add1}" style="color: red"></span><br /> 40 <input type="text" id="add1" name="add1" th:field="*{add1}"> 41 <br> 42 <label>番地以降</label> 43 <span th:if="${#fields.hasErrors('add2')}" th:errors="*{add2}" style="color: red"></span><br /> 44 <input type="text" id="add2" name="add2" th:field="*{add2}"> 45 <br> 46 <label>メールアドレス</label> 47 <span th:if="${#fields.hasErrors('mail')}" th:errors="*{mail}" style="color: red"></span><br /> 48 <input type="text" id="mail" name="mail" th:field="*{mail}"> 49 <br> 50 <label>電話番号</label> 51 <span th:if="${#fields.hasErrors('tell')}" th:errors="*{tell}" style="color: red"></span><br /> 52 <input type="text" id="tell" name="tell" th:field="*{tell}"> 53 <br> 54 <p> 55 <input type="submit" value="登録" name="insert"> 56 </p> 57</form> 58<a href="/EntityList">リストに戻る</a> 59</body> 60</html>

Edit.html

java

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<title>Insert title here</title> 6<script type="text/javascript" th:src="@{/jquery-3.5.1.min.js}"></script> 7</head> 8<body> 9<h2>編集</h2> 10<form action="EntityList" th:object="${entity}" method="post"> 11 <span th:each="list:${list}"> 12 <label>従業員No.</label> 13 <input type="text" id="nom" name="nom"th:value="${list.nom}" readonly> 14 <label>氏名</label> 15 <span th:if="${#fields.hasErrors('name')}" th:errors="*{name}" style="color: red"></span><br /> 16 <br> 17 <input type="text" id="name" name="name" th:value="${list.name}" th:field="*{name}"> 18 <br> 19 <label>かな</label> 20 <span th:if="${#fields.hasErrors('kana')}" th:errors="*{kana}" style="color: red"></span><br /> 21 <br> 22 <input type="text" id="kana" name="kana"th:value="${list.kana}" th:field="*{kana}"> 23 <br> 24 <label>生年月日</label> 25 <span th:if="${#fields.hasErrors('year')}" th:errors="*{year}" style="color: red" th:field="*{year}"></span> 26 <br> 27 <input type="text" id="year" name="year" th:attr="onkeyup='CalcAge2();'" th:value="${list.year}">28 <span th:if="${#fields.hasErrors('month')}" th:errors="*{month}" style="color: red"></span> 29 <br> 30 <input type="text" id="month" name="month" th:attr="onkeyup='CalcAge2();'"th:value="${list.month}" th:field="*{month}">31 <span th:if="${#fields.hasErrors('day')}" th:errors="*{day}" style="color: red"></span> 32 <br> 33 <input type="text" id="day" name="day" th:attr="onkeyup='CalcAge2();'"th:value="${list.day}" th:field="*{day}">34 <br> 35 <input type="text" id="age" name="age"th:value="${list.age}" readonly>36 <br> 37 <label>メールアドレス</label> 38 <span th:if="${#fields.hasErrors('mail')}" th:errors="*{mail}" style="color: red"></span> 39 <br> 40 <input type="text" id="mail" name="mail"th:value="${list.mail}" th:field="*{mail}"> 41 <br> 42 <label>電話番号</label> 43 <span th:if="${#fields.hasErrors('tell')}" th:errors="*{tell}" style="color: red"></span> 44 <br> 45 <input type="text" id="tell" name="tell"th:value="${list.tell}" th:field="*{tell}"> 46 <br> 47 <label>郵便番号</label> 48 <span th:if="${#fields.hasErrors('code')}" th:errors="*{code}" style="color: red"></span> 49 <br> 50 <input type="text" id="code" name="code"th:value="${list.code}" th:field="*{code}"> 51 <br> 52 <label>住所</label> 53 <span th:if="${#fields.hasErrors('add1')}" th:errors="*{add1}" style="color: red"></span> 54 <br> 55 <input type="text" id="add1" name="add1" th:value="${list.add1}" th:field="*{add1}"> 56 <br> 57 <label>番地以降</label> 58 <span th:if="${#fields.hasErrors('add2')}" th:errors="*{add2}" style="color: red"></span> 59 <br> 60 <input type="text" id="add2" name="add2"th:value="${list.add2}" th:field="*{add2}"> 61 <br> 62 <p> 63 <input type="submit" name="update" value="修正・変更" /> 64 </p> 65 </span> 66</form> 67 68<a href="/EntityList">リストに戻る</a> 69 70</body> 71</html>

MastaController.java

java

1package mastalist; 2 3import java.util.ArrayList; 4import java.util.List 5import org.springframework.beans.factory.annotation.Autowired; 6import org.springframework.stereotype.Controller; 7import org.springframework.ui.Model; 8import org.springframework.validation.BindingResult; 9import org.springframework.validation.annotation.Validated; 10import org.springframework.web.bind.annotation.GetMapping; 11import org.springframework.web.bind.annotation.ModelAttribute; 12import org.springframework.web.bind.annotation.RequestMapping; 13import org.springframework.web.bind.annotation.RequestMethod; 14import org.springframework.web.bind.annotation.RequestParam; 15 16@RequestMapping("/EntityList") 17@Controller 18public class MastaController { 19 @Autowired 20 private SelectAll selectAll; 21 @GetMapping 22 public String SelectList(Model model){ 23 ArrayList<Entity> list = selectAll.selectall(); 24 model.addAttribute("AllList",list); 25 return "EntityList"; 26 } 27 @RequestMapping(params="create") 28 public String Create(@ModelAttribute Entity entity) { 29 return "Create"; 30 } 31 @Autowired 32 InsertForm insertForm; 33 34 @RequestMapping(params="insert", method=RequestMethod.POST) 35 public String Insert(@Validated Entity entity,BindingResult result,Model model) { 36 if ( result.hasErrors() ) { 37 return "Create"; 38 } else { 39 String message = insertForm.insert(entity); 40 model.addAttribute("message",message); 41 } 42 return "EntityList"; 43 } 44 45 @Autowired 46 SelectNum selectNum; 47 48 @RequestMapping(params="edit") 49 public String Edit(@RequestParam("nom")int nom,Model model) { 50 List<Entity> list = selectNum.selectnum(nom); 51 model.addAttribute("list",list); 52 return "Edit"; 53 } 54 55 @Autowired 56 UpdateForm updateForm; 57 58 @RequestMapping(params="update",method=RequestMethod.POST) 59 public String Update(@Validated Entity entity,BindingResult result,Model model) { 60 if ( result.hasErrors() ) { 61 return "Edit"; 62 } else { 63 String message = updateForm.update(entity); 64 model.addAttribute("message", message); 65 } 66 return "EntityList"; 67 } 68 69} 70

Entity.java

java

1package mastalist; 2 3import javax.validation.constraints.NotBlank; 4import javax.validation.constraints.NotNull; 5 6import lombok.Getter; 7import lombok.Setter; 8 9@Getter 10@Setter 11public class Entity { 12 Integer nom; 13 @NotBlank(message = "名前を入力してください") 14 String name; 15 @NotBlank(message = "かなを入力してください") 16 String kana; 17 @NotBlank(message = "電話番号を入力してください") 18 private String tell; 19 @NotBlank(message = "メールアドレスを入力してください") 20 private String mail; 21 @NotNull(message = "生年月日を入力してください") 22 private Integer year; 23 @NotNull(message = "") 24 private Integer month; 25 @NotNull(message = "") 26 private Integer day; 27 @NotNull(message = "") 28 private Integer age; 29 @NotNull(message = "") 30 private Integer code; 31 @NotBlank(message = "") 32 private String add1; 33 @NotBlank(message = "") 34 private String add2; 35} 36

その他随時追記いたします。
お力添えをお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

解決しました。
Editへのリクエストパラメーターに@ModelAttributeを入れ忘れていただけでした。凡ミスでした。

投稿2020/11/12 07:01

sad

総合スコア16

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問