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

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

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

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

Spring Boot

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

解決済

Javaアプリの編集画面への移動機能を作成したい

milkcoffee
milkcoffee

総合スコア14

Java

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

Spring Boot

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

1回答

0評価

1クリップ

251閲覧

投稿2022/05/05 19:53

編集2022/05/07 04:06

前提

Javaの学習のためシンプルなアプリを作っています。
(こちらを参考にしています)
入力したデータの編集画面への移動を試みていますが失敗しています。

実現したいこと

入力したデータの編集ページへの移動機能を作りたいです。

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

eclipseを使っているのですが、以下の部分でエラーメッセージが発生しました。

java

@GetMapping("{id}/edit") public String edit(@PathVariable String id, Model model) { Item item = repository.findById(id); model.addAttribute("item", item); return "root/edit"; }
  1. 型の不一致: Optional<InquiryForm> から AbstractReadWriteAccess.Item には変換できません
  2. メソッド addAtribute(String, AbstractReadWriteAccess.Item) は型 Model で未定義です

該当のソースコード

RootController.java

java

package com.example.demo.controllers; import org.hibernate.cache.spi.support.AbstractReadWriteAccess.Item; 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.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import com.example.demo.models.InquiryForm; import com.example.demo.models.InquiryForm2; import com.example.demo.repositries.InquiryRepository; import com.example.demo.repositries.InquiryRepository2; import ch.qos.logback.core.joran.spi.EventPlayer; import java.util.List; @Controller @RequestMapping("/") public class RootController { @Autowired InquiryRepository repository; @GetMapping public String index() { return "root/index"; } @GetMapping("/list") public String inquiryList(Model model) { List<InquiryForm> items = repository.findAll(); model.addAttribute("items", items); return "root/list"; } @GetMapping("/form") public String form(InquiryForm inquiryForm) { return "root/form"; } @PostMapping("/form") public String form(@Validated InquiryForm inquiryForm, BindingResult bindingResult, Model model) { if (bindingResult.hasErrors()) { return "root/form"; } repository.saveAndFlush(inquiryForm); inquiryForm.clear(); model.addAttribute("message", "お問い合わせを受け付けました。"); return "root/form"; } /* * 問題の箇所 */ @GetMapping("{id}/edit") public String edit(@PathVariable Long id, Model model) { Optional<InquiryForm> item = repository.findById(id); model.addAttribute("item", item); return "root/edit"; }

inquiryRepository.java

java

package com.example.demo.repositries; import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import com.example.demo.models.InquiryForm; @Repository public interface InquiryRepository extends JpaRepository<InquiryForm, String>{ Optional<InquiryForm> findById(Long id); List<InquiryForm> findAll(); }

inquiryForm.java

java

package com.example.demo.models; import javax.validation.constraints.Email; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import lombok.Data; @Data @Entity @Table(name = "inquiry") public class InquiryForm implements Serializable { private static final long serialVersionUID = -6647247658748349084L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @NotBlank @Size(max = 10) private String name; @NotBlank @Email private String mail; @NotBlank @Size(max = 400) private String content; public void clear() { name = null; mail = null; content = null; } }

edit.html

java

<!doctype html> <html xmlns:th="http://www.thymeleaf.org" lang="ja"> <head> <title>編集画面</title> </head> <body> <header> <h1> 編集画面 </h1> </header> </body> </html>

試したこと

1, repository.findById(id);
型がないからではと思い、(String id) や(Long id)とすると
- String/Long を変数に解決できません
- トークン "id" に構文エラーがあります。このトークンを削除してください
と別のエラーになってしまいました。

2, model.addAtribute("item", item);
エラーが型 Model で未定義とあるので、Model.classファイルに
import org.hibernate.cache.spi.support.AbstractReadWriteAccess.Item;
の追加を試みましたが書き込み不可だったので正解ではないようです。

解決方法が思いつきません。
お手数おかけしますが、よろしくお願いします。

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

Java 15.0.1
SpringToolSuite4

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

m.ts10806

2022/05/05 21:20

Spring / Spring Boot を質問タグとして追加してください。
milkcoffee

2022/05/05 22:25

ご指摘ありがとうございます。 追加しました。

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Java

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

Spring Boot

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