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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

バリデーション

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

Thymeleaf

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

Spring Boot

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

Q&A

解決済

1回答

2301閲覧

SpringBootのvalidationのエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

バリデーション

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

Thymeleaf

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

Spring Boot

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

0グッド

0クリップ

投稿2021/07/02 01:38

springbootの学習をしている者です。

validationを実装しようと思っているのですが、どうしても下記のエラーが解決できません。
EL1007E: Property or field 'name' cannot be found on null

hasErrorsで入力画面に戻りたいのですが戻れませんどうすればよいでしょうか?

LearnController.java

LearnController.java

1package com.example.demo.controller; 2 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.stereotype.Controller; 5import org.springframework.validation.BindingResult; 6import org.springframework.validation.annotation.Validated; 7import org.springframework.web.bind.annotation.ModelAttribute; 8import org.springframework.web.bind.annotation.RequestMapping; 9import org.springframework.web.bind.annotation.RequestMethod; 10import org.springframework.web.servlet.ModelAndView; 11 12import com.example.demo.model.DataBase; 13import com.example.demo.repository.Repository; 14 15/** 16 * コントローラクラス 17 * 18 */ 19@Controller 20public class LearnController { 21 22 //リポジトリのBean化 23 @Autowired 24 private Repository repository; 25 26 //HTTPリクエストで"/"と一致していればマッピング 27 @RequestMapping("/") 28 //引数にモデルの管理とビューの管理を行ってくれるModelAndViewを指定 29 public ModelAndView home(@ModelAttribute DataBase database,ModelAndView mav) { 30 mav.addObject("database",database); 31 System.out.println("????????????????蕴????????????洤????涟????????澗漤櫮????????栜蘟????????????????芻????澶沮????????"); 32 //画面に出力するViewを指定 33 mav.setViewName("/home"); 34 35 //ModelとView情報を返す 36 return mav; 37 } 38 39 @RequestMapping(value="/entry",method = RequestMethod.POST) 40 //@ModelAttributeはHTTPリクエスト時に渡されたパラメータを自動でDataBaseインスタンス(モデル)にまとめてくれる 41 //引数にモデルの管理とビューの管理を行ってくれるModelAndViewを指定 42 public ModelAndView entry(@ModelAttribute @Validated DataBase database,BindingResult result, ModelAndView mav) { 43 44 if(result.hasErrors()) { 45 46 mav.setViewName("/home"); 47 //mav.setViewName("/check"); 48 49 return mav; 50 } 51 52 //入力されたデータをDBに保存 53 repository.saveAndFlush(database); 54 55 //リポジトリから全件取得 56 Iterable<DataBase> db_list=repository.findAll(); 57 58 //Viewに渡す変数にModelに格納 59 mav.addObject("db_list",db_list); 60 61 //画面に出力するViewを指定 62 mav.setViewName("/entry"); 63 64 //ModelとView情報を返す 65 return mav; 66 } 67}

DataBase.java

DataBase.java

1package com.example.demo.model; 2 3import javax.persistence.Entity; 4import javax.persistence.GeneratedValue; 5import javax.persistence.Id; 6import javax.validation.constraints.NotEmpty; 7 8import lombok.Getter; 9import lombok.Setter; 10 11@Getter 12@Setter 13@Entity 14public class DataBase { 15 @Id 16 @GeneratedValue 17 private Long id; 18 19 @NotEmpty(message="未入力です") 20 private String name; 21 @NotEmpty(message="未入力です") 22 private String tname; 23}

home.html

home.html

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<title>home</title> 6<link rel="stylesheet" th:href="@{/css/style.css}"> 7</head> 8<body> 9 <form action="/entry" method="post" th:object="${database}"> 10 11 名前:<input type="text" name="name" th:value="*{name}" th:errorclass="error-msg"> 12 <p th:if="${#fields.hasErrors('name')}" th:errors="*{name}" th:errorclass="error-msg"></p> 13 <br> 14 15 二つ名:<input type="text" name="tname" th:value="*{tname}" th:errorclass="error-msg"> 16 <p th:if="${#fields.hasErrors('tname')}" th:errors="*{tname}" th:errorclass="error-msg"></p> 17 <br> 18 <input type="submit" value="登録"> 19 20 </form> 21 22</body> 23</html>

entry.html

entry.html

1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<meta charset="UTF-8"> 5<title>登録完了一覧</title> 6<link rel="stylesheet" th:href="@{/css/style.css}"> 7</head> 8<body> 9 <h1>登録完了一覧</h1> 10 <table class="list-table"> 11 <!-- 表示処理 --> 12 <!-- db_listのサイズが0以上の時に入る --> 13 <tbody th:if="${db_list.size()>=1}"> 14 <!-- db_listの要素をdataに一つずつ代入する --> 15 <!-- プロパティやメソッドを指定するのが面倒なのでth:objectで値オブジェクト内の値を取り出す --> 16 <tr th:each="data:${db_list}" th:object="${data}"> 17 18 <td th:text="*{name}"></td> 19 <td th:text="*{tname}"></td> 20 21 </tr> 22 </tbody> 23 </table> 24</body> 25</html>

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

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

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

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

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

guest

回答1

0

ベストアンサー

@ModelAttributeは、名前を指定しない場合「クラス名の先頭を小文字にした名前(dataBase)」になります。
「@ModelAttribute("database")」と指定してあげると、動作するようになると思いますので、お試しください。

LearnController.java

@RequestMapping(value="/entry",method = RequestMethod.POST) public ModelAndView entry(@ModelAttribute("database") @Validated DataBase database,BindingResult result, ModelAndView mav) {

投稿2021/07/06 15:44

KT001

総合スコア618

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問