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

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

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

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

Java

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

バリデーション

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

Thymeleaf

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

Spring Boot

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

解決済

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

sad
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プロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

1回答

0評価

0クリップ

5454閲覧

投稿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

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

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

Create.html

java

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" th:src="@{/jquery-3.5.1.min.js}"></script> </head> <body> <h2>新規登録</h2> <form action="EntityList" th:object="${entity}" method="post"> <label>生年月日</label> <span th:if="${#fields.hasErrors('year')}" th:errors="*{year}" style="color: red"></span> <br> <input type="text" id="year" name="year" th:attr="onkeyup='CalcAge();'" th:field="*{year}" value=null> <span th:if="${#fields.hasErrors('month')}" th:errors="*{month}" style="color: red"></span> <br> <input type="text" id="month" name="month" th:attr="onkeyup='CalcAge();'" th:field="*{month}"> <span th:if="${#fields.hasErrors('day')}" th:errors="*{day}" style="color: red"></span> <br> <input type="text" id="day" name="day" th:attr="onkeyup='CalcAge();'" th:field="*{day}"> <input type="text" id="age" name="age" readonly> <br> <label>氏名</label> <span th:if="${#fields.hasErrors('name')}" th:errors="*{name}" style="color: red"></span><br /> <input type="text" id="name" name="name" th:field="*{name}"> <br> <label>かな</label> <span th:if="${#fields.hasErrors('kana')}" th:errors="*{kana}" style="color: red"></span><br /> <input type="text" id="kana" name="kana" th:field="*{kana}"> <br> <label>郵便番号</label> <span th:if="${#fields.hasErrors('code')}" th:errors="*{code}" style="color: red"></span><br /> <input type="text" id="code" name="code" th:field="*{code}"> <br> <label>住所</label> <span th:if="${#fields.hasErrors('add1')}" th:errors="*{add1}" style="color: red"></span><br /> <input type="text" id="add1" name="add1" th:field="*{add1}"> <br> <label>番地以降</label> <span th:if="${#fields.hasErrors('add2')}" th:errors="*{add2}" style="color: red"></span><br /> <input type="text" id="add2" name="add2" th:field="*{add2}"> <br> <label>メールアドレス</label> <span th:if="${#fields.hasErrors('mail')}" th:errors="*{mail}" style="color: red"></span><br /> <input type="text" id="mail" name="mail" th:field="*{mail}"> <br> <label>電話番号</label> <span th:if="${#fields.hasErrors('tell')}" th:errors="*{tell}" style="color: red"></span><br /> <input type="text" id="tell" name="tell" th:field="*{tell}"> <br> <p> <input type="submit" value="登録" name="insert"> </p> </form> <a href="/EntityList">リストに戻る</a> </body> </html>

Edit.html

java

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" th:src="@{/jquery-3.5.1.min.js}"></script> </head> <body> <h2>編集</h2> <form action="EntityList" th:object="${entity}" method="post"> <span th:each="list:${list}"> <label>従業員No.</label> <input type="text" id="nom" name="nom"th:value="${list.nom}" readonly> <label>氏名</label> <span th:if="${#fields.hasErrors('name')}" th:errors="*{name}" style="color: red"></span><br /> <br> <input type="text" id="name" name="name" th:value="${list.name}" th:field="*{name}"> <br> <label>かな</label> <span th:if="${#fields.hasErrors('kana')}" th:errors="*{kana}" style="color: red"></span><br /> <br> <input type="text" id="kana" name="kana"th:value="${list.kana}" th:field="*{kana}"> <br> <label>生年月日</label> <span th:if="${#fields.hasErrors('year')}" th:errors="*{year}" style="color: red" th:field="*{year}"></span> <br> <input type="text" id="year" name="year" th:attr="onkeyup='CalcAge2();'" th:value="${list.year}"> <span th:if="${#fields.hasErrors('month')}" th:errors="*{month}" style="color: red"></span> <br> <input type="text" id="month" name="month" th:attr="onkeyup='CalcAge2();'"th:value="${list.month}" th:field="*{month}"> <span th:if="${#fields.hasErrors('day')}" th:errors="*{day}" style="color: red"></span> <br> <input type="text" id="day" name="day" th:attr="onkeyup='CalcAge2();'"th:value="${list.day}" th:field="*{day}"> <br> <input type="text" id="age" name="age"th:value="${list.age}" readonly> <br> <label>メールアドレス</label> <span th:if="${#fields.hasErrors('mail')}" th:errors="*{mail}" style="color: red"></span> <br> <input type="text" id="mail" name="mail"th:value="${list.mail}" th:field="*{mail}"> <br> <label>電話番号</label> <span th:if="${#fields.hasErrors('tell')}" th:errors="*{tell}" style="color: red"></span> <br> <input type="text" id="tell" name="tell"th:value="${list.tell}" th:field="*{tell}"> <br> <label>郵便番号</label> <span th:if="${#fields.hasErrors('code')}" th:errors="*{code}" style="color: red"></span> <br> <input type="text" id="code" name="code"th:value="${list.code}" th:field="*{code}"> <br> <label>住所</label> <span th:if="${#fields.hasErrors('add1')}" th:errors="*{add1}" style="color: red"></span> <br> <input type="text" id="add1" name="add1" th:value="${list.add1}" th:field="*{add1}"> <br> <label>番地以降</label> <span th:if="${#fields.hasErrors('add2')}" th:errors="*{add2}" style="color: red"></span> <br> <input type="text" id="add2" name="add2"th:value="${list.add2}" th:field="*{add2}"> <br> <p> <input type="submit" name="update" value="修正・変更" /> </p> </span> </form> <a href="/EntityList">リストに戻る</a> </body> </html>

MastaController.java

java

package mastalist; import java.util.ArrayList; import java.util.List import org.springframework.beans.factory.annotation.Autowired; 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.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; @RequestMapping("/EntityList") @Controller public class MastaController { @Autowired private SelectAll selectAll; @GetMapping public String SelectList(Model model){ ArrayList<Entity> list = selectAll.selectall(); model.addAttribute("AllList",list); return "EntityList"; } @RequestMapping(params="create") public String Create(@ModelAttribute Entity entity) { return "Create"; } @Autowired InsertForm insertForm; @RequestMapping(params="insert", method=RequestMethod.POST) public String Insert(@Validated Entity entity,BindingResult result,Model model) { if ( result.hasErrors() ) { return "Create"; } else { String message = insertForm.insert(entity); model.addAttribute("message",message); } return "EntityList"; } @Autowired SelectNum selectNum; @RequestMapping(params="edit") public String Edit(@RequestParam("nom")int nom,Model model) { List<Entity> list = selectNum.selectnum(nom); model.addAttribute("list",list); return "Edit"; } @Autowired UpdateForm updateForm; @RequestMapping(params="update",method=RequestMethod.POST) public String Update(@Validated Entity entity,BindingResult result,Model model) { if ( result.hasErrors() ) { return "Edit"; } else { String message = updateForm.update(entity); model.addAttribute("message", message); } return "EntityList"; } }

Entity.java

java

package mastalist; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Entity { Integer nom; @NotBlank(message = "名前を入力してください") String name; @NotBlank(message = "かなを入力してください") String kana; @NotBlank(message = "電話番号を入力してください") private String tell; @NotBlank(message = "メールアドレスを入力してください") private String mail; @NotNull(message = "生年月日を入力してください") private Integer year; @NotNull(message = "") private Integer month; @NotNull(message = "") private Integer day; @NotNull(message = "") private Integer age; @NotNull(message = "") private Integer code; @NotBlank(message = "") private String add1; @NotBlank(message = "") private String add2; }

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MySQL

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

Java

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

バリデーション

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

Thymeleaf

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

Spring Boot

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