フォームに入力された値の受け取り

今回のお題

今回のお題は、フォームに入力された値の受け取り方法です。

言語はJava, フレームワークはSpring Bootです。

目次

  • コントローラの編集〜import編
  • コントローラの編集〜アクション編
  • ビューの編集

コントローラの編集〜import編

今回の作業、すなわち「フォームに入力された値をコントローラで受け取って次に表示するビューに渡す」という過程では、以下の3つを使います(必要になる理由は後述)。

まだimportしていなければ、それぞれ記述していきます。

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.ui.Model;

コントローラの編集〜アクション編

必要なものをimportしたので、次にアクションを用意します。

今回は、"/hello"というURLにPOSTメソッドで送られてきた値を、"hello/response.html"で表示したいと思います。

 

@PostMapping("/hello")

public String postRequest(@RequestParam("xxxx") String str, Model model){
    model.addAttribute("sample", str);

    return "hello/response";

}

解説

  • @RequestParam("xxxx")
    RequestParamアノテーションを用いることで、フォームに入力された値を利用することが可能になります。
    "xxxx"には、フォームのname属性の値を入力します。
  • Model model, model.addAttribute, String str, "sample"
    ここは少しややこしいのですが・・・
    @RequestParamで受け取った値を一旦strという箱に入れてmodelに渡し、modelはビューファイル内でstr"sample"という文字列に代入している、というような感じになります。

ビューの編集

最後に、変数をビューで受け取れるようにします。

<p th:text="{$sample}"></p>

 

ポイントは以下の2点ですね。

  • th:text
  • {$sample}

th:textについて

text属性の前にth:とつけることで、属性の値としてJavaのコードを用いることが可能になります。

{$xxxx}という表記について

JavaのファイルをThymeleafファイルに埋め込む場合には、{$xxxxx}という表記になります。
Railsの<%= xxxx %>やLaravelの{{ xxxx }}と同じ役目です。