teratail header banner
teratail header banner
質問するログイン新規登録
Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Thymeleaf

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

Spring Boot

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

Q&A

解決済

1回答

526閲覧

inputタグにthymeleafのth:value=""が何なのか知りたい。またそれが付く場合とつかない場合の違いを知りたい

ikigamikita

総合スコア20

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Thymeleaf

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

Spring Boot

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

0グッド

0クリップ

投稿2024/05/06 06:56

編集2024/05/06 07:10

0

0

前提

後悔しないためのSpring Boot 入門書という参考書を見ながらSpring Bootの学習をしています。
formタグから送信したキーワードをデータベース検索するという章を学んだ時に、

java

1`<form method="POST" action="hello/db"> 2<!-- th:valueでinputのvalueに値を代入--> 3 従業員ID:<input type="text" name="text2" th:value="${text2_value}"> 4 <input type="submit" value="クリック"> 5 </form>">

というタグが出てきました。
しかしその前には、

java

1 <form method="POST"> 2 入力:<input type="text" name="text1"> 3 <input type="submit" value="送信"> 4 </form>

というth:value=""を使わず値を送信する方法(こちらはデータベース検索ではありません)をやりました。

また、そもそもth:value="${text2_value}"のtext2_valueをhtmlにもjavaのクラスにもどこにも定義していないはずなのですが、"${text2_value}には何が入っているのでしょうか?
似たようなコードを書いている人を見ましたが、この方はth:value="${text2_value}"なしで動くようです。あってもなくてもかまわないとは思いませんが、どういうことか分かりません。
どなたかご教授頂けると幸いです。

初期状態のブラウザ画面にもvalueに何も入っていません。
イメージ説明

適当にinputタグに入力してもvalueには何も入っていません。
イメージ説明

※エラーはなく、ちゃんとアプリケーションは動いています。

該当のソースコード

html

1<html xmlns:th="http://www.thymeleaf.org"> 2<head> 3<meta charset="UTF-8"> 4<title>EclipseでSpring Bootの開発環境を構築!!</title> 5</head> 6<body> 7 <h1>Hello, Spring Boot!!</h1> 8 <form method="POST"> 9 入力:<input type="text" name="text1"> 10 <input type="submit" value="送信"> 11 </form> 12 <br/> 13 14 <form method="POST" action="hello/db"> 15<!-- th:valueでinputのvalueに値を代入--> 16 従業員ID:<input type="text" name="text2" th:value="${text2_value}"> 17 <input type="submit" value="クリック"> 18 </form> 19 20</body> 21</html>

HelloController.java

java

1package com.example.hello; 2 3import org.springframework.beans.factory.annotation.Autowired; 4import org.springframework.stereotype.Controller; 5import org.springframework.ui.Model; 6import org.springframework.web.bind.annotation.PostMapping; 7import org.springframework.web.bind.annotation.RequestMapping; 8import org.springframework.web.bind.annotation.RequestParam; 9 10@Controller // アノテーションを使って、Controllerクラスであることを宣言 11public class HelloController { 12 13 14 @Autowired 15 private HelloService service; 16 17 18 19 @RequestMapping(value="/hello") // 「/index」にリクエストが来たときに呼び出されるメソッドを作成 20 public String getHello() { 21 22 23// hello.htmlに画面遷移 24 return "hello"; 25 } 26 27 @PostMapping("/hello") 28 public String postRequest(@RequestParam(name="text1") String str,Model m) { 29 30 m.addAttribute("sample",str); 31 System.out.println("受け取ったよ"); 32 return "hello/response"; 33 } 34 35 36 37 @PostMapping("/hello/db") 38 public String postDbRequest(@RequestParam(name="text2") String id,Model m) { 39 40// 1件検索 41 Employee employee=service.getEmployee(id); 42// 43// 検索結果をModelに登録 44 m.addAttribute("employee",employee); 45 46// db.htmlに画面遷移 47 return "hello/db"; 48 } 49 50} 51

試したこと追記

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10260885730
th:valueはhtmlを上書するとのことですが、実際上書きされていないので解決できませんでした。

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

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

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

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

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

KT001

2024/05/07 10:51

確かに、ご提示のコードですと「th:valueの有り・無し」が混在していますね。th:valueは、value属性に値を設定したい時に使用します。 https://www.thymeleaf.org/doc/tutorials/3.1/usingthymeleaf_ja.html#特定の属性に値を設定 例えば、バリデーションチェックでエラーになった時に、値をクリアしたくない時などに使用します。 今回は、そもそもどこにも定義していないとのことと、ご提示のコード部分だと使っていないので、本の誤植ではないでしょうか。(th:valueを使う想定であれば、「入力」と「従業員ID」の両方に付けると思います) もしかすると、出版元に正誤表があるかもしれません。
jimbe

2024/05/08 06:58 編集

>適当にinputタグに入力してもvalueには何も入っていません。 とりあえず、 html はブラウザが解析して表示するためのソースコードみたいなものですので、 input 部分に入力したからと言って書き換わる類ではありません。 >${text2_value} というのは、コントローラのハンドラでは Model のアトリビュートです。 正誤表探そうとしたらこんな記事が… [Spring Boot本レビュー: 【後悔しないための入門書】Spring解体新書] https://qiita.com/write_once_run_anywhere/items/9e1e358504e699a43fe5 >結論を先に書いておくと、入門書として薦められる本ではないと私は考えています。 >一次情報を参照する意志が感じられず、二次情報を見たり自分の経験だけで語っているように感じます。 >なので、用語の使い方を誤っていたり、概念を正しく理解できていなかったりしている箇所が散見されます。 本件とあわせてなるほどという感じです。
ikigamikita

2024/05/13 05:00

IT001様、jimbe様 ご説明頂きありがとうございました。 私自身理解が浅いので学習を重ねようと思います。
guest

回答1

0

自己解決

参考書が正しくない可能があるとのことです。

投稿2024/05/13 05:00

ikigamikita

総合スコア20

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問