商品詳細ページを作成する
この章のゴール
/product/{id}のような URL の{id}に含まれる値(PathVariable)をコントローラで受け取れるようにする
1. Controller メソッドの追加
前章で作成した ProductController に、商品詳細ページを表示するメソッドを追加する。
URL に含まれる {id} の値を受け取り、固定の内容を表示する。
📘 ポイント
/product/1にアクセスすると、Eclipse の「コンソール」タブにアクセスされたID:1と出力される。- これで、
@PathVariableによって URL の値を取得できていることを確認できる。 - 出力したこの
idは、今後の商品情報の切り替え機能で使用する。
※補足
この時点ではブラウザ上ではエラー(Whitelabel Error Page)が表示される。これはまだproduct/detail.htmlが存在しないためである。
同様にコンソールにも多くのエラーログが出力され、目的のメッセージが見つけづらい。
その場合は、Eclipseのコンソールをクリックした後 Ctrl + F(Macでは Command + F) を押して検索ダイアログを開き、"アクセスされたID"などのキーワードで検索すると素早く確認できる。
(Ctrl + F = 検索 は、Eclipse だけでなくブラウザなど多くのアプリでも共通のショートカットである)
2. View(HTML)の作成
src/main/resources/templates/product に detail.html を作成する。
今回はまだ動的な値は扱わず、固定の内容を表示する。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>商品詳細</title>
</head>
<body>
<h1>商品詳細ページ</h1>
<p>商品ID:1</p>
<p>商品名:サンプル商品</p>
<p>価格:1200円</p>
<a href="/products">▶ 商品一覧へ戻る</a>
</body>
</html>
3. トップページにリンクを追加
トップページ(home.html)から、サンプル商品の詳細ページへ遷移できるようリンクを追加する。
4. 動作確認
- Eclipse の 実行 > Spring Boot アプリケーション でアプリを起動する。
- ブラウザで http://localhost:8080/product/1 にアクセスする。
- 「商品詳細ページ」として固定の内容が表示されれば成功。
- コンソールには
アクセスされたID:1と表示されることを確認する。 /product/2や/product/999にアクセスすると、コンソールにIDが変わって表示される。
6. 現時点の課題
この状態では、どの ID にアクセスしても同じ商品情報が表示される。
ただし、受け取った id の値はコンソールで確認できている。
今後の章では、この値に応じて表示内容を動的に変える仕組みを実装する。
7. Gitでコミットを作成する
ここまでの変更を保存し、コミットを取る。
git add .
git commit -m "商品詳細ページを追加(PathVariableの値を取得してコンソール出力)"
練習問題
商品詳細ページにクーポンコード付きでアクセスできる機能を追加してみよう。
動作仕様:URLの末尾に ?coupon=SPRINGSALE のような形式で値を渡すと、コンソールに クーポン:SPRINGSALE と出力される。
- 入力例:
http://localhost:8080/product/1?coupon=SPRINGSALE - 出力例
アクセスされたID:1
クーポン:SPRINGSALE
💡 ヒント:
@RequestParam を使うと、?key=value 形式の値を取得できる。
@PathVariable と組み合わせて使えることを確認しよう。