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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

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

Q&A

1回答

3025閲覧

thymeleafでエンティティのデータを表示できない

mitsuki_

総合スコア20

Java

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Spring Boot

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

0グッド

0クリップ

投稿2019/02/01 06:19

前提・実現したいこと

java初心者です。エラー分の解析ができず困っています。

stsで、エンティティを使ってフォームでデータを保存するという項目を学習しています。
ブラウザでテーブル形式で表示させたいのですが、eclipseで実行するとエラーになってしまいます。

はじめてのフレームワークなので、指摘箇所が多いかもしれません・・・。
申し訳ないのですが、どなたかご教示いただけますでしょうか。

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

Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'name' cannot be found on null

該当のソースコード

#####1.コントローラー

java

1package com.tuyano.main; 2import org.springframework.beans.factory.annotation.Autowired; 3import org.springframework.stereotype.Controller; 4import org.springframework.transaction.annotation.Transactional; 5import org.springframework.web.bind.annotation.ModelAttribute; 6import org.springframework.web.bind.annotation.RequestMapping; 7import org.springframework.web.bind.annotation.RequestMethod; 8import org.springframework.web.servlet.ModelAndView; 9import com.tuyano.springboot.repositories.MyDataRepository; 10 11@Controller 12public class HeloController { 13 14 @Autowired 15 MyDataRepository repository; 16 17 @RequestMapping(value = "/", method = RequestMethod.GET) 18 public ModelAndView index(@ModelAttribute("formModel") MyData mydata, ModelAndView mav) { 19 mav.setViewName("index"); 20 mav.addObject("msg", "this is sample content."); 21 Iterable<MyData> list = repository.findAll(); 22 mav.addObject("datalist", list); 23 return mav; 24 } 25 26 @RequestMapping(value = "/", method = RequestMethod.POST) 27 @Transactional(readOnly = false) 28 public ModelAndView form(@ModelAttribute("formModel") MyData mydata, ModelAndView mav) { 29 repository.saveAndFlush(mydata); 30 return new ModelAndView("redirect:/"); 31 } 32} 33

#####2.エンティティ

java

1package com.tuyano.main; 2import javax.persistence.Column; 3import javax.persistence.Entity; 4import javax.persistence.GeneratedValue; 5import javax.persistence.GenerationType; 6import javax.persistence.Id; 7import javax.persistence.Table; 8 9@Entity 10@Table(name = "mydata") 11public class MyData { 12 @Id 13 @GeneratedValue(strategy = GenerationType.AUTO) 14 @Column 15 private long id; 16 @Column(length = 50, nullable = false) 17 private String name; 18 @Column(length = 200, nullable = true) 19 private String mail; 20 @Column(nullable = true) 21 private Integer age; 22 @Column(nullable = true) 23 private String memo; 24 public long getId() { 25 return id; 26 } 27 public void setId(long id) { 28 this.id = id; 29 } 30 public String getName() { 31 return name; 32 } 33 public void setName(String name) { 34 this.name = name; 35 } 36 public String getMail() { 37 return mail; 38 } 39 public void setMail(String mail) { 40 this.mail = mail; 41 } 42 public Integer getAge() { 43 return age; 44 } 45 public void setAge(Integer age) { 46 this.age = age; 47 } 48 public String getMemo() { 49 return memo; 50 } 51 public void setMemo(String memo) { 52 this.memo = memo; 53 } 54 @Override 55 public String toString() { 56 return "MyData [id=" + id + ", name=" + name + ", mail=" + mail + ", age=" + age + ", memo=" + memo 57 + ", getId()=" + getId() + ", getName()=" + getName() + ", getMail()=" + getMail() + ", getAge()=" 58 + getAge() + ", getMemo()=" + getMemo() + ", getClass()=" + getClass() + ", hashCode()=" + hashCode() 59 + ", toString()=" + super.toString() + "]"; 60 } 61}

#####3.リポジトリ

java

1package com.tuyano.springboot.repositories; 2 3import org.springframework.data.jpa.repository.JpaRepository; 4import org.springframework.stereotype.Repository; 5 6import com.tuyano.main.MyData; 7 8 9@Repository 10public interface MyDataRepository extends JpaRepository<MyData, Long> { 11}

#####4.テンプレート

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>top page</title> <meta http-equiv="Content-Type" content="text/html; charaset=UTF-8" /> <style> h1 { font-size: 18pt; font-weight: bold; color: gray; } body { font-size: 13pt; color: gray; margin: 5px 25px; } pre { border: solid 3px #ddd; padding: 10px; } tr { margin: 5px; } th { padding: 5px; color: white; background: darkgray; } td { padding: 5px; color: black; backgroiund: #f0f0f0; } </style> <!-- <style th:include="part :: frag_style"></style> --> <!-- <script th:inline="javascript"> function action(){ var val = document.getElementById("text1").value; var res = parseInt(val* ((100+ /*[[${tax}]]*/)/100)); document.getElementById("msg").innerHTML = "include tax:" + res; } </script> --> </head> <body> <h1 th:text="#{content.title}">Helo Page</h1> <table> <form method="post" action="/" th:object="${formModel}"> <tr> <td><label for="name">名前</label></td> <td><input type="text" name="name" th:value="*{name}" /></td> </tr> <tr> <td><label for="age">年齢</label></td> <td><input type="text" name="age" th:value="*{age}" /></td> </tr> <tr> <td><label for="mail">メール</label></td> <td><input type="text" name="mail" th:value="*{mail}" /></td> </tr> <tr> <td><label for="memo">メモ</label></td> <td><textarea name="memo" th:text="*{memo}" cols="20" rows="5"></textarea></td> </tr> </form> </table> <hr /> <table> <tr> <th>ID</th> <th>名前</th> </tr> <tr th:each="obj : ${datalist}"> <td th:text="${obj.id}"></td> <td th:text="${oj.name}"></td> </tr> </table> </body> </html>

試したこと

・ソースコードが本と相違ないか確認しました。

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

・spring boot 2.1.1

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

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

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

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

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

guest

回答1

0

ここじゃない?

テンプレートファイル
下のほう

<td th:text="${oj.name}"></td>

投稿2019/02/01 07:24

apo

総合スコア349

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

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

mitsuki_

2019/02/01 07:26

apoさん、ありがとうございます。 質問後その点に気づき"${obj.name}"へ修正したのですが同じエラーでした・・・。
apo

2019/02/01 07:55

そうですか。 関係ないとは思いますが、MyData.javaファイルの下の、@Overrideの部分は必要なんですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問