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

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

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

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

Java

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

HTML

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

Spring Boot

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

Q&A

解決済

1回答

2903閲覧

フォームに入力した値を削除したい

GJ-

総合スコア2

MySQL

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

Java

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

HTML

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

Spring Boot

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

0グッド

0クリップ

投稿2021/08/13 02:55

編集2021/08/13 09:08

前提・実現したいこと

Springbootを使用してフォームに名前を入力して、その入力された値を削除するというプログラムを作成しています。

実現したいこととしては、別画面で削除をしたいということで、
参考サイトを元に作成しており、削除だけを別に行いたいです。
そして、削除はフォームで入力した値を削除したいです。

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

Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Fri Aug 13 11:16:35 JST 2021 There was an unexpected error (type=Not Found, status=404). No message available

このようにコントローラがうまく機能せず遷移ができていない状態です。

該当のソースコード

一部のみ

html

1<form th:action="@{/index/name-delete/{student_name} (student_name=*{student_name})}" 2 th:method="post" th:object="${student}"> 3 4<h4> 5名前を入力してください。 6</h4> 7 8<p class="text-center"><b>名前</b><font class="text-danger"><b>(必須)</b></font>  9 10<input type="text" id="student_name" name="student_name" required 11 th:value="*{student_name}" /></p> 12 13 14<br> 15<br> 16<button class="btn btn-danger float-right">退会</button> 17 18</form>

一部のみ

java

1 @RequestMapping("/name-delete/{student_name}") 2 public String delete(@PathVariable("student_name") String student_name) { 3 userService.delete(student_name); 4 return "redirect:/index/studentlist"; 5 6 } 7 8 /** 9 *削除画面 10 */ 11 @GetMapping("delete") 12 public String namedelete(@ModelAttribute("student") Student student, Model model) { 13 model.addAttribute("student",new Student()); 14 return "/delete"; 15 }

MySQL

1create table IF NOT EXISTS `student_database`.`student` ( 2`student_id` int(30) primary key auto_increment , 3`student_name` varchar(30) not null , 4`student_address` varchar(100) not null , 5`student_tel` varchar(15) not null 6);

試したこと

コントローラに直接値を入力して実行することで削除自体はできました。
入力した値がうまく渡せていないのが原因だと考えているので、
削除を行う画面とコントローラのコードだけを載せています。

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

色々な方の質問やサイトを参考にさせていただいたのですが、
うまくいかず悩んでいる状態です。
基本的な機能だとは思いますが、分かる方がいらっしゃいましたら教えていただけると嬉しいです。

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

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

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

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

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

m.ts10806

2021/08/13 05:36

index というマッピングはそのコントローラの上位でされてるのでしょうか。 やはり一部だけでは何とも言えません。 ※あとやりたいことと起きてる現象のレイヤーが違うと思います。
GJ-

2021/08/13 07:13

indexはコントローラの上位です。 すいません、あまり慣れておらず... 他にどのクラスがあれば大丈夫でしょうか?
m.ts10806

2021/08/13 07:15

他にと仰いましても、そもそも1つもクラスが提示されていませんので。 省略しすぎると全体が見えません。回答者がいいように補完してしまうともはや別のコードになります。 やはり他者がコピペで再現できるような配慮は必須です。
GJ-

2021/08/13 09:13

現在編集を行って参考にしたサイトを載せました。 質問にも書いているのですが、目的としてはそのサイトのプログラムを元にして、 削除を別に行うプログラムを作成するということです。 m.ts10806さんの言うとおり他者への配慮が欠けていました...申し訳ないです。
guest

回答1

0

ベストアンサー

原因としては、送信側(html)と受信側(Controller)のデータが一致していないことです。

POSTで送りたい場合は、HTMLを以下のようにします。

html

1<form th:action="@{/index/name-delete/}" th:method="post" th:object="${student}"> 2<!-- 上以外は同じです -->

GETで送りたい場合は、HTMLを以下のようにします。

html

1<form th:action="@{/index/name-delete/}" th:method="get" th:object="${student}"> 2<!-- 上以外は同じです -->

以下は、POSTとGETの両方を受け取れるようにしてあります。

java

1@PostMapping("/index/name-delete/") 2public String delete(@ModelAttribute Student student) { 3 userService.delete(student.getStudentName()); 4 // GetterをgetStudent_nameと定義している場合は、student.getStudent_name() 5 return "redirect:/index/studentlist"; 6 7} 8 9@GetMapping("/index/name-delete/") 10public String delete(@RequestParam("student_name") String student_name) { 11 userService.delete(student_name); 12 return "redirect:/index/studentlist"; 13 14}

これで動くと思うので、お試しください。

投稿2021/08/13 10:23

編集2021/08/13 10:27
KT001

総合スコア618

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

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

GJ-

2021/08/13 11:17

回答ありがとうございます。 無事解決することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問