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

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

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

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

Spring

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

解決済

javaspring setterとgetterで型が違うというエラーが出るが原因がわからない。

akasatanaman
akasatanaman

総合スコア1

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

Spring

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

1回答

0リアクション

0クリップ

487閲覧

投稿2022/09/20 03:52

前提

ここに質問の内容を詳しく書いてください。
(例)
javaspringで以下添付させて頂いている画像のようなアプリを作成しようとしています。
イメージ説明

構造は以下のようになっております。
イメージ説明

エラーメッセージ全文はエラーメッセージの欄に記載させて頂いております。

'org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor' (template: "list" - line 11, col 21)
このエラーメッセージを見るに、list.htmlの <input type="text" th:field="*{content}">の部分でエラーが発生してしまっているようです。

Caused by: org.springframework.beans.NotReadablePropertyException: Invalid property 'content' of bean class [java.util.ArrayList]: Bean property 'content' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

setterとgetterで型が違うというエラーのようです。

エラーメッセージ全文は文字数的に記載不可能だったため省略させていただきます。

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

実行すると以下のようなエラーメッセージが表示されてしまいます。

エラーメッセージ

該当のソースコード

以下二つのコードが強く関係していると思われます。

html

list.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>一言コメントApp</title> </head> <body> <h3>一言コメントApp</h3> <form th:action="@{/add}" th:object="${comment}" method="post"> <label for="content">コメント</label> <input type="text" th:field="*{content}"> <button>登録</button> <br> <small style="color: red" th:errors="*{content}"></small> </form> <br> <h3>一覧</h3> <div th:each="comment : ${comment}"> <div>[[${comment.id}]] - [[${comment.content}]]</div> </div> </body> </html>
Comment.java package com.example.demo; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; @Entity public class Comment { @Id @GeneratedValue private Long id; public Long getId() { return id; } public void setId(Long id) { this.id = id; } @NotBlank @Size(max = 40) private String content; public String getContent() { return content; } public void setContent(String content) { this.content=content; } }

その他のコードも記載させて頂きます

package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringJpa2Application { public static void main(String[] args) { SpringApplication.run(SpringJpa2Application.class, args); } }
package com.example.demo.config; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; import com.example.demo.Comment; import com.example.demo.repository.CommentRepository; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor @Component public class DataLoader implements CommandLineRunner { private final CommentRepository repository; @Override public void run(String...args) throws Exception{ Comment comment = new Comment(); comment.setContent("こんにちは"); repository.save(comment); comment = new Comment(); comment.setContent("テストコメント"); System.out.println(comment.getContent()); repository.save(comment); } }
package com.example.demo.controller; 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.PostMapping; import com.example.demo.Comment; import com.example.demo.repository.CommentRepository; @Controller public class CommentController { private final CommentRepository repository; public CommentController(CommentRepository repository) { this.repository = repository; } @GetMapping("/") public String getAllComment(@ModelAttribute Comment coment,Model model) { model.addAttribute("comment",repository.findAll()); return "list"; } @PostMapping("/add") public String addComment(@Validated @ModelAttribute Comment comment,BindingResult result,Model model) { model.addAttribute("comment",repository.findAll()); if(result.hasErrors()) { return "list"; } repository.save(comment); return "redirect:/"; } }
package com.example.demo.repository; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.example.demo.Comment; @Repository public interface CommentRepository extends JpaRepository<Comment,Long> { }
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.3</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example.demo</groupId> <artifactId>spring-jpa2</artifactId> <version>0.0.1-SNAPSHOT</version> <name>spring-jpa2</name> <description>Sample project for Spring Boot</description> <properties> <java.version>11</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>

試したこと

最初はlombokを用いていましたがエラーが出てしまいよくわからなかったためgetter,setterを直接書く方式に変えました。
list.htmlのcontent部分を削除したところそこ以外は正常に機能しました。
イメージ説明

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

ここにより詳細な情報を記載してください。

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

jimbe

2022/09/20 05:35 編集

ファイル名等の"実際にファイル内にあるモノ以外"は、コードのマークダウンの外に書いてください。 それで、 html から参照している content はどこから得られるはずとお考えでしょうか。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

Java

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

Spring

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