フォームに入力された値の受け取り
今回のお題
今回のお題は、フォームに入力された値の受け取り方法です。
言語は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 }}と同じ役目です。